文件不一致……没有出现在‘ls -a’中但它存在?

文件不一致……没有出现在‘ls -a’中但它存在?

我在 Mac OS X 10.6 (Snow Leopard) 上运行了rsync(3.0.6),将一个文件夹从一个外部硬盘 (FAT32) 备份到另一个外部硬盘 (FAT32)。不知何故,某些文件(有时会更改!)被复制为不同的文件名。例如:

campo_2006_valcanale_127.jpg --> CAMPO~40.JPG

缩小并大写,当然下次 rsync 会删除 CAMPO~40.JPG 并再次复制,但几乎总是会再次出错。有时它可以正常工作,但有时正常的文件也会损坏。

现在,如果我进入目标目录并执行操作,ls -a我将无法看到该文件,campo_2006_valcanale_127.jpg因为它已被重命名,但该文件campo_2006_valcanale_127.jpg实际上存在!我可以显示它,我可以在上面书写等等……,只是它是不可见的!也许只是文件名表现得很奇怪……

当我手动复制文件(使用)时,甚至当我使用“Finder!”复制文件时,也会出现同样的行为cp。我拖放一个文件,它的名字就改变了!

如果你有任何提示,请告诉我...如果需要,我可以提供更多信息。

答案1

缩短的文件名是 FAT32 的产物;任何文件名超过旧 8.3 限制的文件都会被赋予缩短的名称,正如您所见。使用适当的文件系统,即能够原生处理长文件名而不是使用奇怪的 hack 的文件系统,您就不会遇到此问题(例如,NTFS、HFS、ext - 均原生处理长文件名)。维基百科有更多关于长文件名FAT32 使用的黑客技术

FAT32 还存在其他问题,导致 rsync 难以工作 - 例如,它不能以任何高精度存储时间戳,因此 rsync 无法使用其正常的启发式方法。

rsync FAQ 中有入口rsync 多次复制相同文件。简而言之,可能是时间戳导致了大部分重新同步;modify-window=1或者也许modify-window=2应该修复这个问题。

相关内容