業務でサーバーの管理を行っていて「rsyncコマンド」を使う機会があったので、使い方をメモ
Contents
rsyncコマンドとは

rsyncコマンドとは、ファイルやディレクトリをまるっと同期させるコマンド
rsyncコマンドの使い方
コマンドの基本的な文法は下記
rsync 同期元パス 同期先パス
とりあえず、、同じPC内でrsync
リモートPCからの同期が便利だと言ったが、
とりあえず基本的な使い方を覚えるという意味で、
同じPC内でファイルをrsync(同期)する。

rsyncコマンドが入っているか確認
Unix系のPCなら大体最初から入っている

rsync実施
とりあえず適当にファイル(rsync.txt)を作成

こいつをデスクトップに同期していく

デスクトップに「rsync.txt」が同期できた。ここまでは簡単。

リモートPCからrsyncする
ここからは筆者が実務でやったやつ。本題。
同じネットワーク上のサーバのディレクトリを、まるっとログイン中のサーバに同期させるってことをやった。

リモートPCからのrsync書き方
リモート先から、ログイン中のPCにrsyncする書式は下記。
rsync -av ユーザ名@リモートホスト名:同期元パス 同期先パス
- ユーザ名:ログインするユーザ名
- リモートホスト名:ログインするホスト名(IPアドレスでも可)
- 同期元パス:同期元となるリモートPCのパス
- 同期先パス:同期先となるローカルPCのパス
-avオプションは、ディレクトリ内を再帰的に・実行中ログも表示させるで実施するオプション。
結構つける機会が多い。
実際の例
例えば次のような状況がある
リモートPC(192.168.1.1)の/tmpディレクトリを、
ローカルPC(ログイン中の)のデスクトップに同期したい。
ユーザ名は仮に「tarou」とする。

この場合コマンドは以下。
rsync -av tarou@192.168.1.1:/tmp /Users/hara-chan/Desktop
これで同期できる。
ディレクトリを同期するときの注意点「/」をつけない
rsyncで一番気をつけたい点は、
ディレクトリを同期する際、同期元のパスの最後に「/」をつけるかどうかだ。
今回、同期元パスを「/tmp」とし、末尾に「/」をつけなかったが、
これは「tmpディレクトリを同期する」、という意味になる。
逆に、同期元パスを「/tmp/」とするとどうなるか、つまり末尾に「/」をつけた場合、
それは、「tmpディレクトリの中身を同期する」、という意味になる。

中身だけ間違って同期させると、仮にファイルが100件あったとして、
それらが同期先のディレクトリ内に100件羅列されてしまう事態になる。
だから、同期元パスのディレクトリの最後に「/」つけるかつけないか、とても大事。
反対に同期先パスの最後の「/」はあっても無くても結果は変わらない。
実際にローカルPC内でやってみた
同一ホスト(ローカル)だが上記とまったく同じ状況を再現してみた。
まずは/tmpに移動。

んで、ディレクトリを作って、その中に適当にファイルも作る

そしたらrsyncコマンド実行

初めてのリモートホストに接続する場合、「本当に接続していいか?」と聞かれるのでyesと入力。

そしたら同期が始まる。vオプションを付けたので、同期中の内容が画面に出力される。

無事、デスクトップに同期された

完了
rsyncメリット
サーバ間でcpコマンド的なことができてしまう
同じPC内であればcpコマンドを使えば良いが、サーバ間ではrsyncが必要。
他サーバへのバックアップがコマンドだけでできてしまう
またサーバのイメージをバックアップとかするほどでもないとき(ディレクトリ単位)とかはrsyncでサクッとバックアップが取れる。
サーバ間でcpコマンド的なことができてしまう
他サーバへのバックアップがコマンドだけでできてしまう