![是否有使用 inotify 的可行的 Linux 备份解决方案?](https://linux22.com/image/482270/%E6%98%AF%E5%90%A6%E6%9C%89%E4%BD%BF%E7%94%A8%20inotify%20%E7%9A%84%E5%8F%AF%E8%A1%8C%E7%9A%84%20Linux%20%E5%A4%87%E4%BB%BD%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%9F.png)
备份需要很长时间。在我们可以信任 btrfs 或 ZFS 来备份增量快照之前,如果有一个守护进程使用 inotify 来跟踪哪些文件实际发生了更改,以便备份运行得更快,那不是很好吗?这个程序在哪里?
如何备份我的 Linux 机器而不必每次都爬取整个文件系统?我想要一个可以检测新的或更改的照片、源代码等并将它们排队复制到我的 NAS 的程序。
答案1
我用“yum search inotify”回答了我自己的问题。它被称为同步并且它托管在 google code 上。
不幸的是,它看起来总是先运行完整的 rsync,所以如果我的电脑一次超过 14 小时没有开启,它仍然对我没有帮助。
Lsyncd 使用 rsync 将本地目录与运行 rsyncd 的远程计算机同步。Lsyncd 通过 inotify 监视多个目录树。添加监视后的第一步是将所有目录与远程主机 rsync,然后通过收集 inotify 事件同步单个文件。因此,lsyncd 是一种轻量级实时镜像解决方案,应该易于安装和使用,同时与您的系统完美融合。有关详细的命令行选项,请参阅 lsyncd --help。
答案2
有一个名为 的新系统fsnotify
,旨在解决 的不足之处,inotify
该系统被引入以解决 的问题dnotify
。fsnotify
让您可以轻松查看整个文件系统。希望fsnotify
它能帮助解决我们未来所有的 Linux 备份问题。
答案3
你可以用因克龙。
/path1 IN_CLOSE_WRITE rsync -au $@/$# backuphhost:/path
答案4
Lsyncd 在启动时同步整个监视树,因为在 99% 的情况下,这是明智的做法。您确实需要本地主机上的目标主机上的目录,否则同步可能会失败,并且您想要同步关闭时错过的内容。但是,如果您知道自己在做什么,您可以关闭启动同步,只需在 Lsyncd 配置文件中设置 sync{..., startup=false}。
关于 inotify,消耗资源的不是文件数量而是目录数量。一个目录就是一个监视,无论它包含多少文件。
fanotify 像 inotify 一样建立在 fsnotify 之上,对于监视大量目录的人来说非常有前景,但目前从 Linux 2.6.37 开始,fanotify 根本不会报告重命名(移动)事件,因此无法用于这样的工作 :-(