如何使rsync仅显示正在复制的文件,而不显示所有扫描的文件夹?

如何使rsync仅显示正在复制的文件,而不显示所有扫描的文件夹?

我的每周备份脚本包含一堆 bash 语句,如下所示:

rsync -va /source_path/ /destination_path/

现在,这很好用,但 -v (详细)选项的行为并不完全符合我的要求。我想要的是它应该只显示正在复制的已更改文件,而不是它扫描的每个文件夹。

例如,如果document1document2文件夹没有变化,但是 中的一个文件发生了变化document3,则显示如下:

document1/
document2/
document3/
document3/foo.txt

如果我-v完全省略该选项,它会完全静音并且根本不显示任何内容。我想要输出显示,但我只对最后一行(foo.txt)感兴趣,这是正在复制的文件,而不是rsync扫描的数十个文件夹,例如 document1、document2 等。

有什么办法可以做到吗?

答案1

你的描述已经是如何rsync工作了。它使用 -v 显示的唯一文件是正在传输或更改的文件。因此,每次运行时,它都会看到目录存在一些差异。

造成这种情况的一个常见原因是源和目标位于不同的文件系统上,并且无法准确复制所有权或权限,并且每次调用都试图这样做。

要确认这一点,请运行rsyncwith -i(或--itemize-changes)。这将显示一个代码,显示rsync决定文件需要工作的原因。如果它是所有权或其他信息(并且您决定不需要此信息),您可以关闭其与--no-owner或类似信息的同步。

相关内容