お品書き
書き直し中…
とりあえず、中へどうぞ
↓↓↓
スポンサーリンク

Linuxコマンド覚書「rsync」

PC/ネット
例文

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-errorsI/Oエラーが出た場合でも,削除を続行する
※除外オプションの指定の仕方
例

--exclude /lost+found/ --exclude /test1/
--exclude /test2/ /test3/ /test4/

コメント