我希望 rsync 打印已修改和已删除的文件。详细选项 (-v) 不仅打印已修改的文件,还打印子目录列表,这可能是因为触碰过的目录被视为已修改。由于我同步了很多子目录中的大量文件,因此无法看到实际的更改。
那么,有没有办法不使用 rsync 打印目录?
我并不是在寻找grep -v "*/$"
这样的答案,因为它也会排除新的目录。
我正在使用的命令:rsync -avh --delete /media/data/src /media/data/bkp
每次它都会打印所有目录的列表:
src/dir1/
src/dir1/sdir1/
src/dir1/sdir2/
src/dir2/
编辑:好的,经过一些密集的测试后……当从 ext4 分区同步到 ext4 以及从 NTFS 同步到 NTFS 时,它不会打印所有目录。只有当从 ext4 同步到 NTFS 时才会打印所有目录……并且-c
不要--omit-dir-times
更改选项。
答案1
您可以尝试使用--omit-dir-times
开关来忽略目录时间(查看 rsync 手册页)。
我个人发现使用-c
switch 是确保只有内容已更改的文件才会显示在输出中的最佳方法。
请注意,使用-c
会减慢 rsync 的速度。
答案2
除了更改挂载类型之外,您还可以告诉 rsync 在复制到不支持它的文件系统时忽略文件权限。以下命令对我有用。
来自 rsync 手册页:
总结:要为目标文件(新旧文件)赋予源权限,请使用 --perms。要为新文件赋予目标默认权限(同时保持现有文件不变),请确保 --perms 选项已关闭并使用 --chmod=ugo=rwX(确保所有非屏蔽位都已启用)。如果您希望使后一种行为更易于输入,可以为其定义一个 popt 别名,例如将此行放入文件 ~/.popt 中(以下定义 -Z 选项,并包含 --no-g 以使用目标目录的默认组):
rsync alias -Z --no-p --no-g --chmod=ugo=rwX
答案3
不要使用-a,它包含-p -o -g。
答案4
我用了:
sudo rsync -auzhni --progress --omit-dir-times --no-o src_dir/ dst_dir
这是一次试运行(选项n
)。删除该选项才能真正rsync
传输文件。