有没有办法只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