コマンド概要
ファイル同期(バックアップ)をする際に使用するコマンド。
私は、リモートにある開発環境のディレクトリと同期して、ローカルで編集する際に使用してます。
環境
ローカルOS:Mac
リモートOS:Linux(CentOS)
前提条件
ローカル・リモート共に、rsync
が使用できること
書式
基本
rsync <オプション> 同期元 同期先
# ローカルでの同期
rsync -avz hoge1/ hoge2/
# リモートサーバとの同期
rsync -avz ホスト名:パス パス
# リモートサーバとの同期 ユーザ名指定する場合
rsync -avz ユーザ名@ホスト名:パス パス
オプション
ググればいろいろ出てくるので、以下は私がよく使うオプションのみ。
オプション | 説明 |
---|---|
-a | アーカイブモード。「-rlptgoD -no-H -no-A -no-X」相当 基本的に、これはいつもつけとく |
-v | ログ・動作内容を表示 |
-z | 圧縮して転送(勝手に展開してくれる) |
-u | 追加・変更されたファイルのみコピー |
--delete | 同期元にないファイルを同期先から削除 |
--exclude | 除外したいファイルを指定 |
参考:http://www.atmarkit.co.jp/ait/articles/1702/02/news031.html
では使ってみよう
リモートのサーバ(hostname.jp
)のディレクトリと同じ状態にする
# 初回
rsync -avz hostname.jp:/home/user/hoge1/ hoge2/
# 更新時は、-uで追加・変更されたファイルのみコピー + --deleteで同期元で削除されているファイルは同期先でも削除
rsync -avzu --delete hostname.jp:/home/user/hoge1/ hoge2/
# 反映させたくないファイル・ディレクトリがあれば、--exclude="パス"(同期元ディレクトリからの相対パス)
rsync -avzu --delete --exclude="nbproject/" hostname.jp:/home/user/hoge1/ hoge2/
ディレクトリ指定の際の注意点
このように 同期元のパスで/
を省いた場合
rsync -avz hostname.jp:/home/user/hoge1 hoge2/
ローカルのhoge2/
以下にhoge1
ディレクトリが作成されてしまうので注意。