如何仅 rsync 和 grep 源目录中已修改文件的路径

如何仅 rsync 和 grep 源目录中已修改文件的路径

有没有办法只grep改变即; (添加、删除、修改)并使用 rsync 打印路径和文件名。

我尝试使用以下命令,但我在单独的行中修改了路径和文件。

rsync -avnc $source $destination
source/10101/10102/10103/
source/10101/10102/10103/demo.fts

注意:源代码中有数千个子目录,我只想打印用绝对路径修改的文件。

答案1

您正在获取目录路径,因为该目录的时间戳或用户/组设置或权限与目标目录相比有所不同。

要停止rsync查看目录时间戳,请使用以下--omit-dir-times标志:

rsync -avc -n --omit-dir-times "$source/" "$target"

请注意,rsync不会显示文件和目录的绝对路径,而是显示相对于正在传输的顶级目录的路径。

使用--itemize-changes(或-i) 代替--verbose(或-v),您可以获得更多有关为什么目标上的文件正在更新。

示例(在输出中添加注释):

$ rsync -ani s/ t
.d..t...... ./          # directory timestamp differs
>f+++++++++ file        # new file

$ rsync -a s/ t

$ touch s/file
$ rsync -ani s/ t
>f..t...... file        # file timestamp differs

$ echo hello >s/file
$ rsync -ani s/ t
>f.st...... file        # file size and timestamp differs

$ rsync -acni s/ t
>fcst...... file        # file size timestamp and checksum differs

$ rm s/file
$ rsync -acni s/ t
.d..t...... ./          # directory timestamp differs
$ rsync -acni --delete s/ t
*deleting   file        # file has been deleted in source
.d..t...... ./          # directory timestamp differs

请参阅系统手册--itemize-changes中该选项的文档。rsync

相关内容