UNIX系OS ( Mac / Linux / FreeBSD )のシェルコマンドに関する各種メモ書き

ファイル転送コマンド scp , rsync

● scpコマンド

scp -r -P <ポート番号> <ソースファイル/ディレクトリ> <ユーザー名>@<サーバーホスト>:<転送先パス>
  • -r オプションでディレクトリを再帰的にコピー
  • -P オプションでSSHポート番号を指定(デフォルトは22)
  • 転送が中断された場合、再開が可能
SCPはSSHの上で動作するファイル転送プロトコルですが、ファイル転送の再開機能は組み込まれていません。SSH接続が切断されると、SCPでの転送も中断されてしまいます。

再開できないということは、大きなファイルを転送している最中に接続が切れると、これまでに転送された部分のデータは無駄になり、時間とリソースの無駄が発生してしまうことを意味します。

一方、rsyncなどの転送ツールは、転送が中断した場合でも、再開時に既に転送済みの部分を補完するだけで済むので、効率的です。

このようにSCPは転送の信頼性は高いものの、転送が中断した場合の対処が非効率的という側面があります。そのため、大量のデータ転送には向いておらず、小規模な転送にはよく使われますが、大規模な転送にはrsyncなどの再開機能付きのツールを使うことが推奨されています。

● rsyncコマンド

rsync -avz -e 'ssh -p <ポート番号>' <ソースファイル/ディレクトリ> <ユーザー名>@<サーバーホスト>:<転送先パス>
  • -a オプションでアーカイブモード(再帰的にディレクトリ/SymlinkをコピーしてPermissionを保持)
  • -v オプションで進捗状況を表示
  • -z オプションで転送データを圧縮
  • -e オプションでリモートシェルを指定(ここではSSHを使う)
  • --partial オプションを付けると中断後再開が可能
  • ハッシュ値を使って転送完全性をチェック
No.2491
03/19 13:30

edit