rsync 在 NTFS/FAT 和 EXT 之间不起作用

wim*_*wim 16 backup ext4 rsync ntfs fat32

我有我在车上播放的音乐,来自 FAT32 USB 记忆棒。我用来放歌曲的文件夹存储在我的 EXT4 硬盘上。我定期添加/删除/重新标记歌曲,偶尔想要rsync更改 U 盘。但是由于某些未知原因(也许是权限?),rsync每次都复制所有文件,而不仅仅是更改文件。我打电话给rsync

rsync -vrlptgD source dest
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它像我想要的那样工作(即知道什么时候文件没有被更改并且不要复制它)?

Glu*_*ate 22

Javier Rivera 的答案有效,但 rsync 检查和比较所有文件校验和需要很长时间。我发现使用以下选项对我来说效果更好:

rsync -rtv --modify-window=1 /source /dest
Run Code Online (Sandbox Code Playgroud)

--modify-window=1开关允许时间戳有 ±1s 的差异。启用此选项后,时间戳比较将更加宽松,并查看 NTFS/FAT 和 Unix 文件系统之间的微小时间差异。

来源(ger):http ://www.kai-hildebrandt.de/tutorials/rsync.html

PS:请注意,夏令时将导致一年两次的完整文件传输。有关更多详细信息和可能的解决方案,请参见此处

  • 出于某种原因,我需要使用 `modify-window=2` 因为 `=1` 仍然复制 *all* 文件。从 NTFS 复制到 FAT32。不过之后就好了。 (3认同)
  • @alexandre1985:这将省略更改其内容但不更改其大小的文件。仅当您只想备份在更改内容时总是更改大小的文件时才应使用它,例如,因为数据仅附加到它们但从未被覆盖。 (2认同)

Jav*_*era 13

FAT32 中的时间戳与 unix 差异太大,无法依靠它们来检查文件更改,您还应该使用 -c 开关,它将强制 rsync 比较所有文件以检测更改,而不是依赖时间戳。它会起作用,但速度较慢。

最后,您的命令中有几个选项不能用于 FAT32 文件系统。

  • -l 会保留链接,FAT32 没有链接的概念
  • -p 将尝试保留权限,同样在 FAT32 上没有权限
  • -t 将尝试保留修改时间戳,FAT32 上只有一个时间戳
  • -g 将尝试保留组所有权,同样不受 FAT32 支持
  • -D 将尝试保存特殊文件和设备,你现在来这里。

正如 htorque 评论的那样,无效的选项不会伤害你,他们什么也不做。但是您必须添加 -c 开关。

这个:

rsync -vrc source dest
Run Code Online (Sandbox Code Playgroud)

应该工作(至少它在我的电脑上工作)。