我的硬盘的 PCB 板坏了。负载不大时硬盘会一直开着,如果我从硬盘上复制太多数据,硬盘就会重新启动。到目前为止,如果我将一个文件夹复制到好硬盘上,等待五分钟,再复制另一个,我就能成功地处理 500 MB 以下的文件夹。
如果我安装坏驱动器并尝试复制一个大小为几 GB 的文件夹,它将启动,然后在硬盘重新启动时停止。当我尝试再次安装驱动器时,Linux 说它无法读取超级块。我有几个文件夹,它们位于许多不同的文件夹中,数据超过 30 GB。
我正在寻找一种在 Linux 中复制文件夹的方法,以便命令以块的形式抓取整个文件夹,并在其间设置定时中断。
答案1
您可以在一段时间后停止复制过程:
cp -R srcdir destdir &
sleep 10
kill -STOP $PID_OF_CP
sleep 10
kill -CONT $PID_OF_CP
答案2
如果慢速传输(即无暂停,但数据速率低)可行,那么类似这样的tar
命令应该可行。该命令将所有文件打包成一个数据流,并pv
限制该流的数据传输速率。
tar cf - <source> | pv --rate-limit 1m | (cd <destination> && tar xf -)
我自己还没有测试过这个,所以语法可能有点不对。
答案3
您可以先使用最大 gzip 压缩来最小化要传输的文件重量,然后使用超时选项 rsync tarball。此外,如果您的磁盘耗尽,您还可以再次运行 rsync。rsync 将查看两个位置的文件并复制差异:它将从同步中断的点继续复制。