中断されたファイルの SCP を再開する方法はありますか?

中断されたファイルの SCP を再開する方法はありますか?

私は時々 scp 経由で非常に大きなファイルをダウンロードしていますが、そのたびに接続が切断され、転送が途中で中断される可能性がわずかにあります。

再開する方法はありますか?

答え1

次のアプローチを試すことができます:SCP-10 ...使用ddダウンロードした部分をスキップし、残りをファイルに追加します。

sofar=`ls -l ./destfile | awk '{print $5}'`
ssh user@host "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile

可能な最適化: 大きなブロックで作業する。これは宿題として残しておきましょう。

答え2

なしでscp

両端にあれば、rsync -LvzP remoteserver:path/to/file localfile1 つのファイルを転送するのに使用できます。

答え3

はい、中断した時点から再開する方法はありますが、scp では不可能です。sftp reget filename必要なことはできます。Yarek と Grawity が有効なソリューションを提供しており、どちらも +1 ですが、中断した時点から再開するには、rsync が適しています。提供されているサンプル コマンドはどちらも、リモート サーバーからローカル ワークステーションにファイルを取得する (ダウンロードする) ことを前提としています。最後の 2 つのパラメーターは、source_file と target_file の順序で考慮する必要があることに注意してください。ファイル名の構文は、ソース ファイルまたはターゲット ファイルがローカルかリモートかによって異なります。[テキスト] ファイルを送信 (アップロード) する場合は、提供されている例を次のように書き換えます。

#ローカルからリモートへ
sofar=`ssh remote_system ls -l interrupted_file | awk '{print $5}'`;
dd if=source_file bs=1 skip=$sofar | ssh remote_system "cat >> ./interrupted_file"

また、rsync ソリューションに、次の点を追加します-e ssh。詳細度、圧縮、所有権の保持、権限、タイムスタンプ、ディレクトリの再帰などが必要かどうかを検討する必要があります。-L パラメータについては、man ページと Google を確認してください。シンボリック リンクを参照するのではなく、リンクとして残しておきたい場合があります。

rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file

答え4

はい、両端が sftp をサポートしている場合は、scp remoteuser@remotehost:/absolute/filename .失敗後に を実行してsftp remoteuser@remotehostダウンロードreget /absolute/filenameを再開できます。

関連情報