Linuxのファイルコピーを再開


9

Linuxで大きなファイルのコピーを再開するにはどうすればよいですか?巨大なファイル(serveral gigabyes)が部分的にネットワークドライブにコピーされており、時間がかかりましたが、ほとんどの場合、ネットワークの問題が修正されてコピー操作が停止する前に完了しました。ファイルのコピーを再開するにはどうすればよいですか。効率の悪いスクリプトを使いたくないので、ecpは機能しません(大きなファイルでは機能しないようです)。

回答:


4

やってみrsync -a /from/file /dest/fileます。


1
また、rsyncについては、rsync -az -e ssh / from / file user@dest.ation:/ full / dest / path
Mikeage

2
ワオ。オプションなしでこのようにrsyncを実行すると、/ dest / fileが削除され、全体が再送信されます。これはどのようにして投票されたのですか?
ジャスティン

1
ファイル属性の保持(-a)はどのように役立ちますか?これを--appendにする必要がありますか?
Malvineous

3

ローカルファイルに追加する必要があるだけで、rsync(チェックサムの計算に時間がかかる可能性がある)を使用したくない場合は、curlを使用できます。たとえば、遅いリムーバブルUSBスティックに大きなファイルがマウントされていて/media/CORSAIR/somefile.dat、その半分だけが現在のディレクトリにある場合、再開するには:

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


ヒントをありがとう、低速の接続が失われたときにWindows SMBサーバー(rsyncではない)からコピーしていて、最初から500MBをダウンロードしたくなかったため、このヒントを使用する必要がありました。
MiKy

2

はい、rsyncを使用する方法です。私にとっては、rsync + sshを介して100 + GBのデータを転送しました。真のバックアップコピーを探している場合は、-a(アーカイブ)オプションを使用して、ファイルの属性(時間、所有者、権限など)を保存してください。

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

また、移行中に変更される可能性のある大きなファイルをコピーする場合にも役立ちます。あなたはできる-負荷が事前に、先に、最終的なコピーの準備ができたら、データを再びそれを行うだけの時間の割合について。rsyncを使用することで、実際のダウンタイムを最小限に抑えることができます。

PS v(冗長)を使用すると、多くのファイルの転送が遅くなる可能性があります。


2

あなたが望むコマンドは次のようなものになるでしょう

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

ssh経由でサーバーにアクセスしてrsyncをその方法で実行できない場合は、FlyingFishのコマンドが最適です。


0

rsyncは、移行先サーバーにrsyncがある場合にのみ有効です。その場合、それは確かに最良の解決策です。

しかし、そうでなければ。rsyncのポイントは大きなファイルの変更された部分のみをコピーすることなので、これらの変更された部分はファイルのどこにでも存在できると想定しています。これは、すでにコピーされたすべてのブロックのチェックサムを行うことを意味します。リモートエンドにrsyncがない場合、ローカルのrsyncは、すでに転送されたすべてを読み取ることから始まります。

ソースマシンにWebサーバーまたはFTPサーバーがある場合は、「-continue」オプションを使用して宛先サーバーからwgetを使用できます。(または、「-continue-at [-| size]」オプションを使用してカールします)。

宛先マシンにFTPサーバーがある場合、-appendオプションを使用してソースマシンでcurlを使用できます。

最後の手段として、 "bs ="(ブロックサイズ)、 "skip ="、および "seek ="引数を指定してddを使用できます。例えば:

2048バイトのブロックを使用できると仮定しましょう。宛先ファイルが現在2'048'000'000バイト(2 GB)の場合、それは2048バイトの1'000'000ブロックです。残りのソースファイルを宛先に追加するには、次のようにします。

dd if = source_file of = destination_file bs = 2048 skip = 1000000 seek = 1000000

転送速度を向上させるために、より大きなブロックサイズを使用できる場合があります。bs =でブロックサイズを指定し、スキップとシークに指定する値はバイト単位ではなくブロック単位であることを忘れないでください。


rsyncについてあなたが言ったことは誤りです。man rsync、-appendオプションの機能を読んでください。
ジャスティン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.