我经常想在 Android 手机和 Linux PC 之间同步我的音乐文件夹。我手机上的文件使用 FAT32 存储在 SD 卡上,可以来自我的 Windows 笔记本电脑或 Linux 台式电脑。我只想比较元数据,否则比较内容需要很长时间。
当我使用 Meld 或 rsync 查找差异时,我得到了很多误报,这是由于 FAT32 以 2 秒分辨率和本地时间(英国时间)存储文件时间,而在 Linux 上,文件修改时间以子格式存储。第二分辨率和 UTC。因此,当我在冬天查看复制到 SD 卡的文件时,现在是夏天,反之亦然,我可以看到正好 1 小时的时间差(精度为 2 秒)。
是否有工具可以扫描文件夹并在文件时间相差 2 秒或 59m58s 和 1h00m02s 之间时认为文件时间相同?
答案1
有了rsync
你就可以完全忽略时间了--ignore-times
。
或者允许时间戳相差一定的秒数(在您的情况下为 3602,一小时+两秒)--modify-window=3602
(请注意,时间戳相差半小时的文件也将落在该窗口中)。
第三种选择是忽略上面的时间(您也可以只考虑 的大小--size-only
)并强制使用 进行校验和计算--checksum
。
答案2
使用--modify-window
选项同步使 2 秒分辨率变平:
--modify-window=NUM, -@ When comparing two timestamps, rsync treats the timestamps as being equal if they differ by no more than the modify- window value. The default is 0, which matches just integer seconds. If you specify a negative value (and the receiver is at least version 3.1.3) then nanoseconds will also be taken into account. Specifying 1 is useful for copies to/from MS Windows FAT filesystems, because FAT represents times with a 2-second resolution (allowing times to differ from the original by up to 1 second).
答案3
您可以使用fdupes
,这是一个可以查找并删除重复文件的命令行程序。它可以选择忽略指定秒数的修改时间差异。要使用fdupes
,您可以运行以下命令:
fdupes -r -S -T2m /path/to/directory1 /path/to/directory2
这将递归搜索两个目录中的重复文件,同时忽略最多 2 分钟的时间差。
您还可以使用dirsyncpro
(这是一个用于同步和备份文件和文件夹的跨平台程序)创建新的配置文件,并设置源目录和目标目录。然后,转到“选项”选项卡并选择“比较选项”。在“时间”部分下,您可以选择“忽略时差”选项并将范围设置为 59 分 58 秒到 1 小时 00 分 2 秒之间。