仅显示从 ext4 同步到 NTFS 时更改的文件

仅显示从 ext4 同步到 NTFS 时更改的文件

我希望 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 手册页)。

我个人发现使用-cswitch 是确保只有内容已更改的文件才会显示在输出中的最佳方法。

请注意,使用-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传输文件。

相关内容