恢复文件复制linux

如何在Linux中恢复大文件的副本? 我有一个巨大的文件(serveral gigabyes)部分复制networking驱动器,这需要很长时间,而且大部分是在复制操作停止之前由于networking问题而被修复的。 如何恢复文件副本。 我不想要一个低效的脚本,并且ecp不起作用(它似乎不适用于大文件)。

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

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

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

你想要的命令将会是这样的

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

除非你可以通过ssh访问服务器,并以这种方式运行rsync,那么FlyingFish给出的命令是最好的。

是rsync是要走的路。 对我而言,我们通过rsync + ssh传输了100多GB的数据。 如果您正在查找真正的备份副本,请确保使用-a (归档)选项来保存文件属性(时间,所有者,权限等)

 host1> rsync -aP file user@host2:/path/to/new/dir/ 

这对于复制在迁移过程中可能更改的大文件也很有用。 您可以预先将数据加载到目标位置,一旦准备好进行最终复制,请重新执行一次,但只能在一小段时间内完成。 通过使用rsync充分发挥潜力,您可以节省实际的停机时间。

PS使用v (详细)可能会减慢许多文件的传输速度。

rsync只有在目标服务器上有rsync的情况下才有用。 在这种情况下,这确实是最好的解决scheme。

但不是,否则。 由于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 = source_file of = destination_file bs = 2048 skip = 1000000 seek = 1000000

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