恢复文件复制 Linux

恢复文件复制 Linux

如何在 Linux 中恢复大文件的复制?我有一个巨大的文件(几 GB)部分复制到网络驱动器,这花了很长时间,而且在复制操作因网络问题而停止之前大部分都完成了,现在这个问题已经修复了。我如何恢复文件复制。我不想要一个效率低下的脚本,而 ecp 不起作用(它似乎不适用于大文件)。

答案1

你想要的命令将是这样的

rsync -v --append /path/to/afile /mnt/server/dest/afile

除非您可以通过 ssh 访问服务器并以此方式运行 rsync,否则 FlyingFish 给出的命令是最好的。

答案2

如果您知道您只需要附加到本地文件并且不想使用 rsync(这可能需要很长时间来计算校验和),则可以使用 curl。例如,如果您在安装的慢速可移动 USB 上有一个大文件,并且/media/CORSAIR/somefile.dat只有一半位于当前目录中,则要恢复:

curl -C - -O "file:///media/CORSAIR/somefile.dat"

答案3

我会尝试rsync -a /from/file /dest/file

答案4

仅当目标服务器上有 rsync 时,rsync 才有用。在这种情况下,它确实是最佳解决方案。

但其他情况则不然。由于 rsync 的目的是只复制大文件中更改的部分,因此它假定这些更改的部分可以位于文件中的任何位置。这意味着它将对已复制的所有块进行校验和。如果远程端没有 rsync,则本地 rsync 将首先读回已传输的所有内容。

如果您的源计算机具有 Web 或 FTP 服务器,则可以使用带有“--continue”选项的目标服务器的 wget。(或使用带有“--continue-at [-|size]”选项的 curl)。

如果您的目标机器有 FTP 服务器,您可以在源机器上使用带有 --append 选项的 curl。

作为最后的手段,您可以将 dd 与“bs=”(块大小)、“skip=”和“seek=”参数一起使用。例如:

假设您能够使用 2048 字节块。如果您的目标文件当前为 2'048'000'000 字节(2 GB),则为 1'000'000 个 2048 字节块。要将源文件的其余部分附加到目标,您可以

dd if=源文件 of=目标文件 bs=2048 skip=1000000 seek=1000000

您可以使用更大的块大小来提高传输速度。只需记住使用 bs= 指定块大小,并且为 skip 和 seek 指定的值以块为单位,而不是以字节为单位。

相关内容