在使用 rsync 和 nfs 挂载时如何防止出现消失错误?

在使用 rsync 和 nfs 挂载时如何防止出现消失错误?

我正在将文件从 Ubuntu 服务器移动到 Snow Leopard 服务器。Ubuntu 服务器有一个大约 6TB 的 NFS 共享,我想将其克隆到 Snow Leopard 服务器。

我在 Snow Leopard 服务器上安装了 nfs 共享,然后运行

rsync -av /Volumes/FromUbuntu /Volumes/LocalCopy

复制大约 100GB 后,它会抱怨文件消失了。我猜是因为某种原因 NFS 链接失效了?这是什么原因造成的?Ubuntu 服务器没有崩溃,而且据我所知也没有连接问题。我不介意反复运行 rsync 命令直到复制完成,但 rsync 生成文件列表需要大约 6 个小时。

有什么建议吗?通过 SSH 进行 rsync 会更快吗?谢谢!

(PS:我尝试过只使用“cp -arv”,这似乎不会失败,但根据 Mac 上的网络流量监视器,在 rsync 建立其文件列表后,复制文件所需的时间似乎是 rsync 的两倍?)

更新:我正在尝试通过 ssh 从 mac 服务器 rsync 到 ubuntu 服务器,速度似乎快了很多(创建文件列表并开始传输只用了不到两个小时,而从 nfs mount rsync 则花了大约六个小时才构建了初始文件列表。)看起来在 mac 上安装 NFS 共享肯定有问题。有人遇到过这个问题吗?反过来,在 ubuntu 客户端上安装 mac 上的 nfs 共享怎么样?我原本计划在 Mac 上为 Ubuntu 客户端托管 NFS 共享,但现在我有点紧张。感谢您的意见!

答案1

据我所知,“文件消失”情况对 来说并不是致命错误情况rsync,进程应该可以正常继续。您是说rsync报告“文件消失”消息后就停止了吗?

如果您正在备份实时文件系统,则始终可以从 获得“消失”消息rsync。在rsync将文件添加到传输列表和实际rsync读取文件之间,文件可能会因任何正当原因而“消失”(例如,临时锁定文件被删除,或文件被重命名)。请注意,某些应用程序通过创建和删除隐藏锁定文件来解决 NFS 文件锁定的限制,并且 可能rsync会看到其中一些。

我建议在备份时尽可能保持源文件系统静止。理想情况下,除了备份过程之外,其他任何人都不应访问它,但我意识到这可能不可行。如果您的源文件系统位于 LVM 逻辑卷上,那么您可以考虑创建只读快照作为备份源。

答案2

这是文件名中特殊字符的问题,如下所述: https://superuser.com/questions/91967/rsync-character-set-problems

答案3

我在日常备份脚本中所做的是,该脚本是一个rsync包装器:

#!/bin/bash

rsync "$@" 2> >(grep -v vanished)
ret=$?
((ret==24)) && exit 0 || exit $ret

相关内容