概括:
我使用以下设置通过 rsync 将 Synology NAS 上的数据备份到远程磁盘。
- 第一个备份本地:在 Synology NAS 上初始化 rsync 到磁盘(安装在 NAS 上)。
- 未来的远程备份:在 Mac 上将 rsync 初始化到磁盘,现在安装在远程位置的 Mac 上。
问题:我获得了所有包含特殊字符的数据(文件或文件夹)的两份副本。
问题:有没有办法使用相同的基本流程(首先通过 NAS 在本地备份,然后通过 Mac 进行其余备份,使用 rsync)而不会出现上述问题?
现状:下面的内容相当长,包括两处编辑,但虽然问题得到了进一步分析,但尚未解决。
详细描述:
我有一个已经运行了很长时间的设置。事实上,自从我设法解决了初始特殊字符问题(详细内容在这里),之后我在 mac 上的 rsync 中使用“--iconv=utf-8-mac,utf-8”选项。设置如下:
位置 1:Synology NAS
地点 2(在遥远的星系中):带有外部磁盘的 Mac(Mac OS Journaled)
任务:Mac 上的 rsync 作业将文件夹从 NAS(位置 1)拉到外部磁盘(位置 2)。
我现在计划在位置 2 设置一个新磁盘(也是 Mac OS Journaled)。由于需要传输大约 2TB 的数据,因此我执行以下操作:
位置 1:借助 USB 的奇迹,将新磁盘插入 NAS。
位置 1:使用 NAS 上的 rsync 作业将数据推送到新磁盘
前往我们这里称为地点 2 的遥远星系
位置 2:从 Mac 初始化有限的 rsync 拉取作业,现在已插入新磁盘。
问题:出于某种原因,步骤 (4) 并未在 2 秒内完成且没有任何变化,而是开始抱怨“文件已消失:...[指定的文件位置]”大量文件。然后它开始将文件夹和文件复制到磁盘 — 即使它们已经在那里了!70 GB 之后,据我所知,它已为名称中包含特殊字符的所有文件夹制作了完全冗余的副本(并为名称中不包含特殊字符的文件夹中的所有名称中包含特殊字符的文件制作了冗余副本)。例如:
drwxrwxrwx 5 _unknown _unknown 170 Aug 7 2013 Pippi Långstrump-Pippi i Söderhavet
drwxrwxrwx 5 _unknown _unknown 170 Aug 7 2013 Pippi Långstrump-Pippi i Söderhavet
这两个文件夹看起来完全相同,但它们并列为两个不同的文件夹。如果我使用 Mac GUI,我可以进入每个文件夹并看到它们包含相同(质量相同)的三个轨道(我甚至不知道如何使用命令行将它们分开,但使用 GUI 我可以直观地看到我“进入”了不同的文件夹)。而且它们不仅仅是虚拟的,因为数据子集的总大小从 64 GB 增加到了 82 GB。
发生了什么?在我这个外行看来,似乎 Mac 上初始化的 rsync 进程无法“看到”NAS 上的源文件已经存在于目标磁盘上,并将它们再次放在那里。当 Mac 终端显示文件和文件夹名称时,它显然使用相同的符号,但它仍然必须将它们解释为不同的“底层”,否则文件系统将不允许这样做。
现在,这还不是全部。当我尝试使用 --delete 选项让系统仅保留一个特殊字符文件夹/文件时,一切都发生了。文件夹确实被删除了,但新文件夹是副本,最终我仍然有重复项,子集中有 82 GB,而不是 64 GB。
发生了什么事?我该怎么办?
编辑于 9 月 11 日:聪明的 Tomáš Pospíšek(我猜他很熟悉特殊字符 ;) 建议我“深入研究”,所以我使用了他的命令(在 Ronja 而不是 Pippi 上,因为我有太多不同的 Pippi 文件夹)。简单的“ls -l”给了我:
drwxrwxrwx 2 _unknown _unknown 68 Aug 7 2013 Ronja Rövardotter
drwxrwxrwx 2 _unknown _unknown 68 Aug 7 2013 Ronja Rövardotter
然而
sh-3.2# ls -l Ronja* | hexdump -C
导致:
00000000 52 6f 6e 6a 61 20 52 6f cc 88 76 61 72 64 6f 74 |Ronja Ro..vardot|
00000010 74 65 72 3a 0a 0a 52 6f 6e 6a 61 20 52 c3 b6 76 |ter:..Ronja R..v|
00000020 61 72 64 6f 74 74 65 72 3a 0a |ardotter:.|
或者,如果我稍微理清一下:
52 6f 6e 6a 61 20 52 6f cc 88 76 61 72 64 6f 74 74 65 72 3a 0a 0a |Ronja Ro..vardotter:..
52 6f 6e 6a 61 20 52 c3 b6 76 61 72 64 6f 74 74 65 72 3a 0a |Ronja R..vardotter:.
换句话说,它们并不完全相同,只是表面上表现得完全相同。
谢谢。但我该怎么做呢?有没有办法格式化磁盘(例如区分大小写的日志式),以便 NAS 和我的 Mac 都可以正确写入磁盘?或者有没有办法绕过这个难题,即将磁盘连接到本地 Mac(位置 1)并通过以太网进行第一次备份?与 USB 3 连接相比,这将花费很长时间,但至少备份将在本地和远程“由 Mac 解释”。你有什么建议?
编辑于 9 月 14 日:热心的 Tomáš 进一步建议(通过下面的评论)我应该尝试 rsync 一个名称中带有特殊字符的文件,看看会发生什么(他建议了一种解决方法)。不幸的是,发生的情况是,我在目标磁盘上留下了两个名称看似相同的文件,但是,在十六进制转储时,您可以看到它们的编码不同。我的问题是我似乎无法正确删除这两个文件。也就是说,当我“rm”删除它们以致没有文件可见(“ls -l”没有列出它们)时,我仍然可以在 Mac Finder 中看到文件(或文件夹;那里也是一样)。即使我重新启动系统等,也会发生这种情况,所以文件信息以某种方式出现在 Mac Finder 中,即使它们没有从命令列表中出现。
此时,我有点放弃了,选择了懦弱的解决方案,简单地擦除磁盘,然后通过 Mac 和相同的 rsync 命令重新提取初始站点(位置 1)上的数据。从传输角度来看,这花费了更长的时间,但直接“解决”了问题。我现在已经全部设置好了,运行起来像钟表一样准确。
但是,这个问题本身还没有解决。也就是说,我想知道如何:
- 使用在 NAS 上初始化的 rsync 进程将数据从 Synology NAS 推送到外部磁盘(Mac OS Journaled,安装在 NAS 上)
使用安装了磁盘的Mac 上的 rsync 命令将数据备份到外部站点。
如果有人知道,请回答问题,我会立即将您标记为问题解决者(和英雄)!
注意:这个问题现在就像一个小“我去年夏天做了什么”的故事,所以我重写了上面的总结,以便潜在的问题解决者能够知道核心问题是什么。