LoginSignup
14
19

More than 3 years have passed since last update.

rsyncで、リモートとローカルのディレクトリを同期

Last updated at Posted at 2018-09-30

コマンド概要

ファイル同期(バックアップ)をする際に使用するコマンド。
私は、リモートにある開発環境のディレクトリと同期して、ローカルで編集する際に使用してます。

環境

ローカル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ディレクトリが作成されてしまうので注意。

14
19
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
19