例文 rsync -a --delete /test1/ /test2/ ※スラッシュ「/」の有無に注意 基本的に元ディレクトリには末尾に/をつける
検証:「/」の有無で考えうる4種類のパターンで結果を試してみた test1、test2というフォルダを作って、その中にテキストファイルを作成、 test1のフォルダの中身をそっくりtest2の中にコピーしたい (1) rsync -a --delete /test1 /test2 (2) rsync -a --delete /test1/ /test2 (3) rsync -a --delete /test1 /test2/ (4) rsync -a --delete /test1/ /test2/ (1)両方「/」なし ⇒ コピー先フォルダの中にコピー元フォルダが作られてしまう (2)コピー元側だけ「/」付加 ⇒ 正常(test2の中にtest1の中身がコピーされた) (3)コピー先だけ「/」付加 ⇒ コピー先フォルダの中にコピー元フォルダが作られてしまう (4)両方「/」付加 ⇒ 正常 結論としては、ディレクトリをそっくりコピー(バックアップ)したい場合は、コピー元フォルダ側に必ず「/」を指定すること。(しないとコピー先にフォルダが作られてその中にコピーされてしまう。)
■オプション
-v | バックアップ中にコピーしているファイル名を表示する |
-r | 指定したディレクトリ以下を再帰的にコピーする |
-l | シンボリックリンクはそのままコピーする。指定しないとリンク先の実体がコピーされる |
-H | ハードリンクはそのままコピーする。指定しないとリンク先の実体がコピーされる |
-p | パーミッション属性をたもったままコピーする |
-o | 所有者属性をたもったままコピーする。指定しないと属性はコピーしたユーザーのものになる |
-g | グループ属性をたもったままコピーする。指定しないと属性はコピーしたユーザーのものになる |
-t | タイムスタンプをたもったままコピーする |
-D | デバイスファイルをたもったままコピーする |
-z | データを圧縮して転送する |
-u | 追加されたファイルだけをコピーする |
-a | 上記のオプションで「rlptgoD」を同時に指定する |
--existing | 更新されたファイルだけをコピーし、追加されたファイルは無視する |
--delete | コピー元で削除されたファイルは、コピー先でも削除する。-aオプションと同時に指定するとコピー元とコピー先を同期できる |
--exclude '**' | **に一致するファイルはコピーしない。「*.bak」「*~」など特定のファイルを除外したいときに使う |
--stats | コピーの結果を表示する。指定しないといっさいのメッセージは表示されない |
-e ssh | 暗号化してファイルを転送する。コピー先としてネットワークでつながった別のホストを指定するときに使う |
--ignore-errors | I/Oエラーが出た場合でも,削除を続行する |
※除外オプションの指定の仕方
例 --exclude /lost+found/ --exclude /test1/ --exclude /test2/ /test3/ /test4/
コメント