transfer

linux

scpやrsyncで低負荷コピー

サーバーにアップロードやダウンロードするときに、scp や rsync を使いますが

大きなファイルや大量のファイルを転送したいときに、あまりサーバーに負荷をかけたくないときってありますよね。

通信帯域を制限して、rsync や、scp を使うオプションを紹介します。

scp

オプションの説明

  • -p ... パーミッションや更新日時などのファイル情報を保持したままコピー
  • -r ... ディレクトリを再帰的にコピー
  • -l 1000 ... 1000 Kbit/sec ( =  125KByte/sec ) に転送速度を制限する
  • *(アスタリスク) ... コピー元(カレントディレクトリにあるすべてのファイルとディレクトリ)
  • コピー先

rsync

すべてコピーするscp と違って、転送元と転送先が異なるファイルのみ転送する

オプションの説明

  • -a ... -rlptgoD と同じ
    • -r ... ディレクトリを再帰的に転送する
    • -l ... シンボリックリンクを維持
    • -p ... パーミッションを維持
    • -t ... タイムスタンプを維持
    • -g ... 所有者グループを維持
    • -o ... ファイル所有者をそのままコピー ( root権限実行時のみ有効)
    • -D ... --devices , --specials と同じ
      • --defices ... ブロックデバイスをコピー(root権限実行時のみ有効)
      • --specials ... 名前付きパイプやFIFOなどの特殊ファイルをコピー
  • -v ... 転送情報を表示
  • -u ... 転送先ファイルが存在している場合、転送先ファイルよりもタイムスタンプが新しい場合にのみコピー
  • --delete ... コピー元に無いファイルはコピー先でも削除する
  • --bwlimit=1024 ... 1024 kbyte/sec に転送速度を制限する
  • --exclude=*.zip ... 転送しないファイルを指定
  • コピー元、コピー先の順に指定

その他のよく使うオプション

  • -n ... 実際には転送しないで転送対象
  • -e "ssh -i /User/Tom/.ssh/id_rsa-hoge" ... プロトコルにSSHを使用する際の秘密鍵を指定する

おわりに

毎回メモを探すのが手間なので備忘録として記録しました。

-linux