サーバのデータをバックアップしたい。データの同期をしたい。差分だけ同期したい。そんなときはrsyncコマンドが便利です。
2度目以降の転送は差分同期により高速に転送できます。
rsyncコマンドの基本的な使い方
rsync [オプション] 同期元 同期先
【※ポイント】
同期元のディレクトリに / を付けるか付けないかで動作が変わります。
▼fromディレクトリの中身をtoディレクトリ内に転送して同期します。
1 |
rsync -arv /dir/from/ /dir/to/ |
▼fromディレクトリをtoディレクトリ内に転送して同期します。(同期先に/dir/to/fromというディレクトリが作成されます。)
1 |
rsync -arv /dir/from /dir/to/ |
rsyncコマンドのオプション
オプションは次の通りです。
-a | パーミッションやグループなどを保持したまま同期します。 |
-h | 表示される情報に単位をつけます。 |
-l | シンボリックリンクをそのままコピーします。 (ターゲットの指定はそのまま) |
-n | 実際の同期はせずに実行時の動作を表示します。(DryRun) |
-r | コピー元のディレクトリを再帰的に同期します。 |
-u | 追加されたファイルだけをコピーします。 |
-v | 処理中のファイル名を表示します。 |
-z | データを圧縮して転送します。 |
-e “シェル名” | リモートシェルを実行します。(-pでポート番号指定可能) 例:-e “ssh -p 2222” |
-H | ハードリンクをコピーします。 |
–bwlimit | 転送速度の上限を設定して帯域制限します。(単位:kB) |
–compress | データを圧縮して転送します。 |
–checksum | チェックサムで変更の有無をチェックします。 |
–delete | コピー元で削除されたファイルをコピー先で削除します。 |
–dry-run | 実際の同期はせずに実行時の動作を表示します。(DryRun) |
–exclude=PATTERN | パターン一致するファイルの同期を除外します。 |
–exclude-from=FILE | ファイルに記述されたパターンと一致するファイルを除外します。 |
–existing | 更新されたファイルのみ同期する。(追加ファイルは無視) |
–include=PATTERN | パターン一致するファイルを除外しません。 |
–include=-from=FILE | ファイルに記述されたパターンと一致するファイルを除外しません。 |
–timeout=TIME | タイムアウトを設定します。(単位:秒) |
別サーバーへの同期時のユーザ指定
同期元・同期先のディレクトリの前に ユーザ名@ホスト名: を付けると別サーバーに指定したユーザーで接続して同期します。
【例】ローカルの/tmp/testuser/public_html/ を、exsample.comサーバーにtestuserでSSH(ポート2222)で接続して/home/testuser/public_html/に同期する。
1 |
rsync -av -e "ssh -p 2222" /tmp/testuser/public_html/ testuser@exsample.com:/home/testuser/public_html/ |
rsyncコマンドの利用例
▼ローカルの/tmp/testuser/public_html/ を、exsample.comサーバーにtestuserでSSH(ポート2222)で接続して/home/testuser/public_html/に同期するテストを行う。(DryRun)
1 |
rsync -av -e "ssh -p 2222" --dry-run /tmp/testuser/public_html/ testuser@exsample.com:/home/testuser/public_html/ |
▼ローカルの/tmp/testuser/public_html/ を、exsample.comサーバーにtestuserでSSH(ポート2222)で接続して/home/testuser/public_html/に完全に同期する。(削除も対象)
1 |
rsync -av -e "ssh -p 2222" --delete /tmp/testuser/public_html/ testuser@exsample.com:/home/testuser/public_html/ |
▼exsample.comサーバーにtestuserでSSH(ポート2222)で接続して/home/testuser/public_html/をローカルの/tmp/testuser/backup/に同期する。
1 |
rsync -av -e "ssh -p 2222" testuser@exsample.com:/home/testuser/public_html/ /tmp/testuser/backup/ |
こんな感じで様々なオプションを利用して同期ができます。
サーバのメンテナンスやバックアップ時にrsyncコマンドを利用しましょう。