Linux環境運用していると、rsyncでファイルだったりディレクトリ同期をする機会多いけどオプションとか忘れる事多いのでメモ
よく使うサンプルを挙げてみた。
##/の意味
まずは、このスラッシュの使い方で久々にやるとまずはまるので整理
有無 | 動作 |
---|---|
有り src/ | src配下のファイルが同期対象 |
なし src | srcディレクトリ自体が同期対象 |
##オプション一覧
色んなオプションあるけど、適切なものをいつもmanで調べるのでこれを気にまとめとく
オプション | 意味 |
---|---|
-a | 「-rlptgoD」と指定したのと同様の効果。(--recursive --links --perms --times --group --owner --devices) とりあえず基本つけておく |
-v | 処理の経過を表示 |
-r | 再帰的にコピー |
--delete | 削除ファイルも同期 |
--existing | 更新分のみ(追加は無視される) |
--exclude | 除外対象を指定 |
-e ssh [user@host] | ssh経由での同期 |
##よく使うサンプル
だいたいrsync使う場合は、下記パターンのどれかを使って、cronなりshellscriptで回すと思う
######src配下をdst配下へ同期
$ rsync -av ./src/ dst
$ll dst
aaa.txt
######srcをdst配下へ同期
$ rsync -av ./src dst
$ ll dest
src
######リモートのsrc配下をローカルのdstに同期
$ rsync -av -e ssh [user]@[host]:./src/ dst
######ローカルのsrc配下をリモートdstに同期
$ rsync -av -e ssh ./src/ [user]@[host]:dst
######特定のファイル(*.log)以外を同期
$ rsync -av -e ssh --exclude '*.log' ./src/ [user]@[host]:dst
######更新されたファイルのみ同期
$ rsync -av -e ssh --existing ./src/ [user]@[host]:dst
######ファイルを完全(削除したものも対象)に同期
$ rsync -av -e ssh --delete ./src/ [user]@[host]:dst