毎度のようにググっているのでメモ

Robocopy

前提条件

  • 特定ドライブの全データを別ドライブにコピーするコマンド
  • 宛先のデータは消さない
  • 送り元はZ:\で送り先はD:\

使うコマンド

robocopy.exe Z:\ D:\ /copy:DAT /dcopy:DAT /E /XJ /R:3 /W:5 /XD "`$RECYCLE.BIN" "System Volume Information" ".DS_Store" /TEE /NP /UNILOG+:./robocopy.log /L

オプションの意味合い

  • 公式ドキュメントは以下
オプション 効果
/COPY:DAT ファイルのデータ・属性・タイムスタンプをコピー
/DCOPY:DAT ディレクトリのデータ・属性・タイムスタンプをコピー
/E 再帰的にコピーする。空ディレクトリを含む
/XJ ジャンクションを除外する。シンボリックリンクみたいなもの?
/R:3 失敗したとき3回までリトライする
/W:5 リトライする時5秒待つ
/XD コピーから除外するディレクトリ名
/TEE ログ出力と画面出力を同時に行う
/NP 進捗を表示しない。表示するとログが見にくくなる
/UNILOG+ ログをUnicodeで出力する。既にある場合は追記する
/L リストを表示するだけでコピーしない。いわゆるdry-run

rsync

前提条件

  • 特定ディレクトリの全データをリモートホストの同ディレクトリにコピーするコマンド
  • 宛先のデータは消さない
  • 送り元はローカルで送り先はhost.example.com

使うコマンド

screen
rsync --recursive --times --progress --verbose /path/to/dir/hoge user@host.example.com:/path/to/dir/
  • 末尾の/の有無で挙動が変わるので注意する
  • sshが切れた場合はscreen -lsで調べてscreen -rでアタッチ

オプションの意味合い

  • 公式ドキュメントは man rsync
オプション 効果
-r, –recursive ディレクトリ内を再帰的にコピー
-t, –times タイムスタンプをコピー
–progress 進捗を出す
-v, –verbose 詳細を出す。これが無いと何がコピーされるか分からない
-n, –dry-run リストを表示するだけでコピーしない