rsync 是解决我的问题的最佳方法吗?

rsync 是解决我的问题的最佳方法吗?

我有一台 OEL/RHEL 5.3 服务器,其“源”挂载到 16TB 10Gbps NFS 共享,其“目标”挂载到使用 OCFS2 格式化的 16TB FC LUN。

我需要确保目标与源匹配,并且我很高兴它们不同步,即使只有一两个小时 - 使用 rsync 很容易做到这一点。

但是,如果有人删除了源上的每个文件,而该文件在下一个预定时间段内没有被 rsync 删除,那就太好了 - 它会检测到即将从目标中删除 >20% 的源文件并选择停止。

这种情况可能吗?或者是否有其他工具更适合解决这个问题?我可以灵活地使用这台机器的操作系统和文件系统,但不能灵活地使用与两个存储盒的实际连接类型。

谢谢。

答案1

如果出现任何 NFS 错误,理论上您应该受到保护 ( man rsync):

如果发送方检测到任何 I/O 错误,则将自动禁用目标上的任何文件删除功能。这是为了防止发送方的临时文件系统故障(如 NFS 错误)导致目标上大量文件被删除。

您还可以限制损坏,--max-delete=NUM只删除一定数量的数据。然后您可以从磁带或任何您使用的东西中恢复该部分。

但实际上,真正的问题可能是有人删除源中的所有文件?难道你不应该用权限来停止这种操作吗?

答案2

您可以使用 rsync--max-delete=NUM来告诉 rsync 不要删除指定数量的文件,其中 NUM 是小于文件总数 20% 的某个数字,并且--backup/--suffix可以选择重命名目标上的文件而不是删除。

答案3

你可以将一些东西拼凑起来只计算文件数量。实际上,像这样:

(cd /source && ls -FalR . ) | sort > /root/sourcelist.$$
(cd /dest && ls -FalR . ) | sort > /root/destlist.$$
diff -u /root/sourcelist.$$ /root/destlist.$$ | egrep '^-' | wc -l

它会告诉你要删除的文件数量。在同步之前,运行一些知道有多少文件太多的程序。

相关内容