我有大量数据需要在 2 个 macOS(1.3 TB)之间传输。
不幸的是,我从 mac1 到 mac2 的复制(通过将 mac1 的相关目录作为网络目录挂载到 mac2 上),使用‘ rsync
’(使用 withparallel
命令)的复制已中断(855 GB 的所有内容已复制到 1.3 TB 上)。
自从这次事件之后,我就无法正确地接手那些尚未复制的缺失部分。
我尝试过(在 macOS 10.15.4 Catalina 上):
parallel -j32 rsync -az {} /Users/home_henry_from_astro/ ::: /Volumes/henry/*
和
parallel -j32 /usr/local/opt/coreutils/libexec/gnubin/cp -urp {} /Users/home_henry_from_astro/ ::: /Volumes/henry/*
在这两种情况下,复制似乎都无法实现,带有的命令cp -u
没有显示任何内容,对于也是一样rsync -az
,除了一些权限错误,但这些错误并不严重,至少我是这样认为的。
我定期检查目录的大小/home_henry_from_astro/
,但大小并没有增加,总是相同的大小:855 GB
这是怎么回事?我该如何规避这个似乎在复制过程中挂起的问题?
编辑 :我提供以下更多信息来调试这个挂起:
以下是结果:$ ps aux | grep cp
sh-3.2# ps aux | grep cp
root 39911 26.8 3.9 7914992 2603432 s004 R 10:05PM 264:46.62 /usr/local/opt/coreutils/libexec/gnubin/cp -urp /Volumes/henry/Phd_2019_2020 /Users/home_henry_from_astro/
root 39915 24.1 4.0 7857356 2661576 s004 U 10:05PM 280:13.09 /usr/local/opt/coreutils/libexec/gnubin/cp -urp /Volumes/henry/Projets_info /Users/home_henry_from_astro/
root 39848 0.0 0.0 4605780 15244 s004 S+ 10:05PM 0:15.34 perl /usr/local/bin/parallel -j32 /usr/local/opt/coreutils/libexec/gnubin/cp -urp {} /Users/home_henry_from_astro/ ::: /Volumes/henry/COPIE_Stage_Incomplete_lors_de_la_copie_de_kawito_vers_astro ...
这真的很奇怪,因为我R
在第一个进程上有一个运行标志' ',但我不知道其他进程的其他代码,如' S+
'或' 'U
他们的意思是什么 ?
欢迎任何帮助。
答案1
ssh
理想情况下,您将在“远程”Mac 上启用该服务并rsync
以适当的客户端/服务器方式运行。这比安装远程文件系统要高效得多。
尽管如此,我们假设您仍在挂载远程文件系统。简化命令并查看这里发生了什么。我删除了它,-z
因为在本地文件系统中的目录点之间复制时它会被忽略,并添加了它-v
以查看发生了什么。您可能需要添加另一个-v
以获得额外的输出
rsync -av /Volumes/henry/* /Users/home_henry_from_astro/
您已经复制了 800 多 GB 的数据。该rsync
过程必须跳过所有这些。现在,由于您使用了-a
(archive) 标志,它可以根据大小和时间跳过文件。但它必须重新传输全部任何大小或时间戳不同的文件。不仅仅是更改的部分,而是整个文件。如果这是一个大文件,复制将需要相当长的时间。(如果您可以rsync
在网络连接的每一端运行一个,那么您就可以从中获益,因为这样只需要重新传输更改的块。)如果您正在观察,您可以使用该--progress
标志来查看发生了什么,但如果您正在写入日志文件,请不要使用此标志
rsync -av --progress /Volumes/henry/* /Users/home_henry_from_astro/