如何知道 rsync 是否没有更改任何文件?

如何知道 rsync 是否没有更改任何文件?

在 bash 脚本中,我使用 rsync 来制作目录的精确副本:

rsync --verbose --archive --update --delete \
    ~/cat-pics/ \
    ~/top-secret/

但我如何获得有关是否已转移任何内容的反馈?我如何知道该操作是否更改了任何文件?特别是,我想知道是否添加、更改或删除了任何文件。

我看到了这个--stats选项,但它的输出似乎是为人类而不是 bash 脚本制作的。

有什么指点吗?

答案1

使用-i( --itemize-changes) 获取有关每个文件更改的输出。

每个输出行的第一个字符(默认格式)指示文件发生了什么。如果需要,您可以将格式修改为与您的解析更相关的格式。

  • '<' 表示文件正在传输到远程主机(发送)。

  • '>' 表示文件正在传输到本地主机(已接收)。

  • “c”表示该项目正在发生本地更改/创建(例如创建目录或更改符号链接等)。

  • 'h' 表示该项目是到另一个项目的硬链接(需要 --hard-links)。

  • '.'表示该项目未更新(尽管它可能具有正在修改的属性)。

  • “*”表示逐项输出区域的其余部分包含消息(例如“删除”)。

相关内容