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


13

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

rsync -vrlptgD source dest

如何使它像我想要的那样工作(即,知道何时未更改文件并且不复制它)?

Answers:


17

哈维尔·里维拉(Javier Rivera)的答案行得通,但是rsync检查并比较所有文件校验和需要花费很长时间。我发现使用以下选项对我来说更好:

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

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

来源(ger): http

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


这很棒。--iconv从源Linux到dest MacOS时,我还发现该选项
很有用

2
由于某些原因,我仍需使用,modify-window=2因为=1仍会复制所有文件。从NTFS复制到FAT32。之后就可以了。
吕克(Luc)2015年

我添加了--size-only标志以跳过大小匹配的文件
alexandre1985 '11

1
@ alexandre1985:它将忽略更改其内容但不会更改其大小的文件。仅当您只想备份在更改内容时总是更改大小的文件时,才应使用该文件,例如,因为仅将数据附加到文件中,而从未覆盖它们。
David Foerster '18

11

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

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

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

就像激烈的评论一样,无效的选项不会伤害您,它们只会无济于事。但是您必须添加-c开关。

这个:

rsync -vrc source dest

应该可以工作(至少在我的计算机上可以工作)。


3

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

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


1

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

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

--no-p:不允许

--delete:删除目的地中不匹配的文件和文件夹(如果您确实要这么做)

--progress:显示传输过程中的进度。这对于大文件很有用。


1
除了我之外-vrc,还有我的支持-vrcz
安东尼

0

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

您必须寻找技巧才能使用它。

尝试:

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

更多信息在这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.