【问题标题】:Remote Path for monitoring changes用于监控更改的远程路径
【发布时间】:2016-07-28 23:03:42
【问题描述】:

我已经创建了基于 inotify-tools 的简单脚本,但最后当我决定监控 /remotepath,它是通过命令 mount.cifs 从 NAS 挂载的,它不起作用。

所以经过一番调查,我发现了 inotify-tools 不支持远程文件夹的信息。

你们中的任何人是否有任何使用简单工具的经验,这将使我有机会观看远程文件夹,如果有什么变化,那么将运行 rsync。

也许我应该只使用 rsync 并将远程文件夹与新文件同步?

感谢您的任何想法。

与此同时,我创建了一些简单的 bash 脚本来执行我想要的操作,但是我遇到了一个问题,如果从目标文件夹中删除某些内容并且我不想再次同步这个已删除的文件会发生什么。 知道如何解决这个问题吗?

#!/bin/bash

### Logs path
path="/var/log/compare"
log="compare.log"
listing1="listing1.log"
listing2="listing2.log"
### Path which will be monitored
destination="/path/to/destination/"
source="/path/to/remote/folder"


## Watching for content in source folder
ls -lh $source > $path/$listing1
### I`m checking if something was changed
        echo "$(date)" 'INFO' 'I will compare listing files' >> "$path/$log"
        if cmp -s "$path/$listing1" "$path/$listing2"
### Files are the same
        then
        echo "$(date)" 'INFO' 'Listings are the same' >> "$path/$log"
### Files are different
        else
        rsync -art $source $destination
        echo "$(date)" 'INFO' 'Finished synchronization' >> "$path/$log"
fi
cp $path/$listing1 $path/$listing2

【问题讨论】:

  • 我应该考虑 rdiff-backup 吗?

标签: monitoring rsync alternate inotify-tools


【解决方案1】:

inotify 确实是不适合这项工作的工具;它通过拦截内核中的文件系统活动来工作,因此将完全错过远程活动。

理想的解决方案是在 NAS 机器上运行 inotify。这对于某些设备当然是可能的,但你没有说你有什么设备(如果你说了我可能没有相同的设备)。

现有的任何其他工具都将完全按照您的脚本所做的工作(尽管可能更漂亮),所以我认为您不需要追求那个途径。

无论如何,您的脚本完全是多余的!如果您只是定期运行 rsync,它会做完全相同的事情(rsync -t 只是比较文件名、大小和时间戳)。唯一的区别是 rsync 会将远程文件列表与您的真实文件进行比较,而不是文件列表的缓存副本。顺便说一句,-a 暗示了-r-t,所以rsync -a 就足够了。

我会研究一件事:直接在 NAS 设备上运行 rsync。通过 CIFS 访问文件列表的效率低于在本地运行它,因此如果您的 NAS 可以支持 rsync,那么就这样做吧。 (群晖NAS盒子有rsync,其他设备我就不知道了。)

【讨论】:

  • 先生您好,感谢您的及时答复。关于您的问题,我正在使用与 Linux 服务器连接的 Synology 解决方案,在 Linux 站点上,inotify 或 rsync 或任何其他工具都没有问题。在 Synology 的情况下,由于封闭的操作系统和缺少软件包,它可能会很复杂。如果 inotify 工具可以在 NAS 上运行,那么是的,我宁愿在 Synology 上运行它。关于 rsync,我正在考虑,但问题是当我删除 Linux 服务器(目标)上的一些文件时,rsync 会与它们的 Synology 源同步。
  • 我不再拥有 Synology(我将其替换为 NUC),但我曾经使用 ipkg 从 nlsu2 项目安装软件包。它的工作方式类似于 apt-get 等。
  • 关于被删除的文件被替换,我不明白你的脚本是如何改变的?它只是在发生时改变。在任何情况下,--existing 标志告诉 rsync 更新现有文件而不创建新文件。
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 2022-01-27
  • 2017-07-26
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多