Linuxで大きなファイルのコピーを再開するにはどうすればよいですか?巨大なファイル(serveral gigabyes)が部分的にネットワークドライブにコピーされており、時間がかかりましたが、ほとんどの場合、ネットワークの問題が修正されてコピー操作が停止する前に完了しました。ファイルのコピーを再開するにはどうすればよいですか。効率の悪いスクリプトを使いたくないので、ecpは機能しません(大きなファイルでは機能しないようです)。
Linuxで大きなファイルのコピーを再開するにはどうすればよいですか?巨大なファイル(serveral gigabyes)が部分的にネットワークドライブにコピーされており、時間がかかりましたが、ほとんどの場合、ネットワークの問題が修正されてコピー操作が停止する前に完了しました。ファイルのコピーを再開するにはどうすればよいですか。効率の悪いスクリプトを使いたくないので、ecpは機能しません(大きなファイルでは機能しないようです)。
回答:
やってみrsync -a /from/file /dest/file
ます。
ローカルファイルに追加する必要があるだけで、rsync(チェックサムの計算に時間がかかる可能性がある)を使用したくない場合は、curlを使用できます。たとえば、遅いリムーバブルUSBスティックに大きなファイルがマウントされていて/media/CORSAIR/somefile.dat
、その半分だけが現在のディレクトリにある場合、再開するには:
curl -C - -O "file:///media/CORSAIR/somefile.dat"
はい、rsyncを使用する方法です。私にとっては、rsync + sshを介して100 + GBのデータを転送しました。真のバックアップコピーを探している場合は、-a
(アーカイブ)オプションを使用して、ファイルの属性(時間、所有者、権限など)を保存してください。
host1> rsync -aP file user@host2:/path/to/new/dir/
また、移行中に変更される可能性のある大きなファイルをコピーする場合にも役立ちます。あなたはできる-負荷が事前に、先に、最終的なコピーの準備ができたら、データを再びそれを行うだけの時間の割合について。rsyncを使用することで、実際のダウンタイムを最小限に抑えることができます。
PS v
(冗長)を使用すると、多くのファイルの転送が遅くなる可能性があります。
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 =でブロックサイズを指定し、スキップとシークに指定する値はバイト単位ではなくブロック単位であることを忘れないでください。