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

Pra*_*eri 3 rsync

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

rsync -va /source_path/ /destination_path/
Run Code Online (Sandbox Code Playgroud)

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

例如,如果document1document2文件夹未更改,但 中的文件已更改document3,则显示如下:

document1/
document2/
document3/
document3/foo.txt
Run Code Online (Sandbox Code Playgroud)

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

有什么办法吗?

Bow*_*Red 5

您的描述已经是如何rsync工作的。它使用 -v 显示的唯一文件是它正在传输或更改的文件。所以每次运行时,它都会看到目录有一些不同。

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

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

  • 如果问题是目录上的时间戳,最好使用“--omit-dir-times”(“-O”)。这样,您就不会真正影响非目录的同步方式。 (5认同)