![为什么 rsync 创建了许多与我的真实文件名重复的隐藏文件?](https://linux22.com/image/230848/%E4%B8%BA%E4%BB%80%E4%B9%88%20rsync%20%E5%88%9B%E5%BB%BA%E4%BA%86%E8%AE%B8%E5%A4%9A%E4%B8%8E%E6%88%91%E7%9A%84%E7%9C%9F%E5%AE%9E%E6%96%87%E4%BB%B6%E5%90%8D%E9%87%8D%E5%A4%8D%E7%9A%84%E9%9A%90%E8%97%8F%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个目录,我定期通过 rsync 同步到该目录rsync -rva
。今天我发现,对于我拥有的许多文件,例如path/to/S00041.jpg
,我还有一个名称path/to/._S00041.jpg
位于 rsync 目的地的空文件。我想它们是由谁创造的,rsync
但我不能确定。所有这些文件都与其相应的原始文件具有相同的时间戳,因此我不知道它们何时出现。
源目录和目标目录均位于 Mac OS 上。如果这有任何帮助,我会从不同的位置和计算机同步到该目录(但显然目录结构始终相同)。
我很好奇这是否是由 rsync 完成的以及为什么。还有一种通过 rsync 自动“修复”它的方法吗?
答案1
在 MacOS 上,每个文件的“资源叉”中可以存储附加信息。在本机 MacOS 文件系统上,此附加信息(透明地)存储为文件本身的一部分。但是,当文件复制到非本机文件系统时,资源叉必须单独存储。这些是._*
文件。较新的应用程序倾向于创建资源文件而不是资源分支,因此导出此类数据时,所有内容都保存在单个文件中。
当它们的长度为零时,您可以安全地删除它们:
find /path -name '._*' -type f -size 0 -delete
尽管您可以选择跳过rsync
它们,但您不能有条件地跳过它们,即仅当它们的长度为零时。
参考: