web-dev-qa-db-ja.com

ポート転送を使用しているときに、大きなscpファイル転送を再開するにはどうすればよいですか?

私は数ホップ先のマシンを使用しており、ファイルを転送するためにポート転送を設定する必要があります。

編集:明確にするために、リモートマシンにアクセスするには複数のホップが必要です。私のマシンから、VPNをセットアップしました。ここで10.255.x.xにアクセスできます-これは、VPN経由で接続できる唯一のマシンです。 .x.xにログインしたら、他のマシンに接続できます。y.yもその1つです。

私のマシンから:

ssh -L 4567:localhost:4567 [email protected]

次に、そのマシンから:

ssh -L 4567:localhost:22 [email protected]

できます

scp -P 4567 me@localhost:/path/to/large/file.gz .

私はこの実行を無理やり残しましたが、転送がどこかで停止したことがわかりました。

Sshではなくrsyncを使用して転送を再開するためのいくつかの提案を見てきましたが、それを設定する方法がわかりません。これは可能ですか?

10
chris

Scpのバージョンによっては(ソースコンピュータのバージョンが重要なようです)、scpコマンドを再実行するだけで転送を再開できます。しかし、注意してください!バージョンが部分転送をサポートしていない場合、部分ファイルは単に上書きされます。

次のrsyncスイッチは、scpがサポートしていない場合に、壊れた転送を再開するのに便利です。

     --append                append data onto shorter files
     --append-verify         like --append, but with old data in file checksum
 -e, --rsh=COMMAND           specify the remote Shell to use
     --progress              show progress during transfer

コマンド

rsync --append-verify --progress --rsh="ssh -p 4567" me@localhost:/path/to/large/file.gz .

望ましい効果が得られるはずです。 -p sshのスイッチは小文字にする必要があります。

9
Dennis

Scpの代わりにsftpを使用する

あなたの場合:

sftp -a -P 4567 me@localhost:/path/to/large/file.gz .

Sftpのmanページから:

-a      Attempt to continue interrupted downloads rather than overwriting existing partial or complete copies of files.  If the remote file contents differ from the partial local copy then the resultant file is likely to be corrupt.
2
AlexR

rsyncはデフォルトでsshを使用します。rsyncの-eスイッチを使用して正確なsshコマンドを指定する必要がある場合があります。また、転送を再開できるように不完全なファイルを保持する--partialもあります。

1
Luke Hollins