● 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
オプションを付けると中断後再開が可能
- ハッシュ値を使って転送完全性をチェック