rsync在NTFS / FAT和EXT之间无法正常工作

我用我的汽车播放的音乐来自FAT32 USB记忆棒。 我用来放歌曲的文件夹存储在我的EXT4硬盘上。 我定期添加/删除/重新录制歌曲,偶尔想要将更改rsync到USB记忆棒。 但由于某些未知原因(可能是权限?), rsync每次都会复制所有文件,而不仅仅是更改过的文件。 我叫rsync像:

 rsync -vrlptgD source dest 

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

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

 rsync -rtv --modify-window=1 /source /dest 

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

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

PS:请注意,DST每年会导致两次完整的文件传输。 请参阅此处了解更多详细信息和可能的解

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

最后,您的命令中有几个选项无法与FAT32文件系统一起使用。

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

正如htorque评论一样,无效的选项不会伤害你,他们只会无所作为。 但是你必须添加-c开关。

这个:

 rsync -vrc source dest 

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

我在OSX下遇到了类似的问题,而Glutanamate的回答没有帮助。 有些文件相差一小时; 这可能是因为我倾向于相对频繁地跨越时区。 其他文件在一天甚至一个月内关闭。 我不知道为什么会这样。 对一些时间戳差异很大的文件进行校验和显示它们实际上是相同的。

在任何情况下,它看起来像--size-only选项,告诉rsync忽略时间戳,将适用于我的目的。 -c / --checksum (如Javier所述)也可以,但需要更长的时间。 我计时了,在我正在使用的子目录中比较GB左右的校验和花了大约一分钟。 当然,发生这种情况的速度取决于系统中最慢的驱动器; 在我的情况下,这是我手机中的SD卡。 然而,那是在我已经进行了一些文件操作(包括校验和)之后,因此许多文件可能已经被复制到RAM缓存中。

您还应该避免使用流行的-a选项。 我对FAT32的建议是

  rsync -vrc --delete --progress --no-p source destination 

–no-p:没有许可

–delete:删除目标中不匹配的文件和文件夹(如果你真的想要这个)

–progress:显示转移过程中的进度。 这对大文件很有用。

这是你正在使用的太多标志(-vrlptgD)。 请记住,rsync是一个Linux实用程序,不能有效地使用Fat32和NTFS。

你必须寻找能够使用它的技巧。

尝试:

 rsync -rvh --size-only --progress --delete /path/to/ext4/ /path/to/fat32/ 

更多信息在这里