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


11

私は時々、scpを介して非常に大きなファイルをダウンロードしていますが、接続が途切れて転送が途中で途切れるたびに小さなチャンスがあります。

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

回答:


9

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

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

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


私はまだこれをテストしていませんが、ddを使用することはソリューションに対する素晴らしいアプローチのように聞こえるため、暫定的に答えを受け入れています。
GJ。

私はそれをテストしました、完璧に動作します、ありがとう!
Kossak

@コサック、聞いてよかった!
yrk 2015

dd小さなブロックサイズでは、遅くなる可能性があります(ここではわずか350 kB /秒)。幸い、scp転送は1024バイトブロックで行われるようです。そうである場合(または、ファイルを最も近い1024バイトブロックに切り捨てることにより)、次のように高速化できますssh rsys "dd if=./srcfile bs=1024 skip=$sofar" >> ./destfile。(その$sofar場合、スキップするには1024バイトブロックの数でなければなりません!)
tanius

2
rsys2行目は単なるホスト名の例であり、の特別な引数ではないことを理解するのに少し時間がかかりましたsshuser@host混乱を避けるために置き換えることをお勧めします。
アーメド

7

scp、いいえ。

両端にある場合はrsync -LvzP remoteserver:path/to/file localfile、1つのファイルを転送するために使用できます。


これにより、中断された巨大なファイルをダウンロードする時間を節約できました。ありがとうございました。
phette23

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


1

(ここに記載されているrsyncまたは以外の)別の解決策がありますが、dd誰も言及していないことに驚いています。それはのreputコマンドですsftp


0
scp -o ConnectTimeout 60

接続のタイムアウトを指定できます。接続が切断されないようにすることができます。


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.