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

rsyncコマンドとは、
ローカル内や、ローカル-リモート間において、ファイルやディレクトリを同期させることが可能なlinuxコマンドだ。

Linuxサーバーや、MacPCなど、Unix系のPCなら大体最初から入っている
which rsync
#実行結果
/usr/bin/rsync
ローカルPC内でrsyncする手順
まずは、ローカルPC内のファイルを、rsyncコマンドで同期する手順を紹介する。

まずは、後で同期させるファイル(rsync.txt)を適当に作成する。
場所はどこでも良い。
touch rsync.txt
次に、上記ファイルを、デスクトップに同期していく
rsyncコマンドの書式
rsyncコマンドの基本的な書式は以下のようになっている。
rsync 同期元パス 同期先パス
rsyncコマンドで同期(ローカル内)
上記rsyncコマンドの書式にしたがって、
カレントディレクトリのrsync.txtを、デスクトップにコピーするコマンドは以下のようになる。
# ./rsync.txtを、デスクトップへ同期
rsync ./rsync.txt /Users/[ユーザ]/Desktop/
実行すると、デスクトップに「rsync.txt」が同期できる。
以上がrsyncコマンドを使用して、ローカル内でファイルを同期する手順だ。
まあこれだけだと、「cpコマンドと変わらなくね?」と思うかもしれないし、筆者も実際そうだと思う。
しかし、rsyncコマンドが本領発揮するのは、次で説明する、
ローカル-リモート間でのファイル同期(またはディレクトリ同期)だ。
ローカル -リモート間でrsyncする手順
次に、ローカル – リモート間のファイルを、rsyncコマンドで同期する手順を紹介する。

実務ではこちらのパターンを使用するケースが多いだろう。
あるサーバAにログインして、ネットワーク内のリモートサーバB内のファイルやディレクトリを、rsyncコマンドでサーバAに同期するといった感じだ。
rsyncコマンドの書式(ローカル – リモート間)
ローカル – リモート間でのrsyncコマンドの書式は以下のようになっている。
rsync -av ユーザ名@リモートホスト名:同期元パス 同期先パス
■rsyncコマンド引数
- ユーザ名 :リモートへのログインユーザ名
- リモートホスト名:リモートホスト名(IPアドレスでも可)
- 同期元パス :同期元ファイルパス
- 同期先パス :同期先ファイルパス
■rsyncオプション(おすすめ)
- -a :なるべくコピー元のファイルと同一条件でコピーする。
- -v :で詳細を出力する。
rsyncコマンドで同期(ローカル – リモート間)
次のような状況を例にする。
リモートサーバ(192.168.1.1)の/tmpディレクトリを、
ログイン中のサーバ(ローカル)の/var/www/htmlディレクトリに同期したい。

リモートサーバへのログインユーザを「tarou」とした場合、
rsyncコマンドでローカル – リモート間を同期するコマンドは以下のようになる。
rsync -av tarou@192.168.1.1:/tmp /var/www/html
リモート情報を含む上記rsyncコマンド実行後の注意点は、以下。
- コマンドを実行後、ログインユーザのパスワードの入力を求められるので、パスワードを入力してENTERを押す。
- 初めてログインするリモートホストの場合、接続する場合「本当に接続していいか?」と聞かれるのでyesと入力し、ENTERを押す。
以上で、同期が実行され、完了する。
-avオプションを使用しているため、詳しい実行結果はコンソールに出力されているはずだ。
rsyncコマンドでディレクトリを同期するときの注意点
rsyncコマンドでディレクトリを同期する際の注意点として、
同期元のパスの最後に「/」をつけないと言うこと覚えておいてほしい。
同期元のパスの最後に「/」をつけてしまうと、ディレクトリの中身を同期してしまうからだ。
同期元のパスの末尾に「/」をつけない場合
「ディレクトリごと同期する」
同期元のパスの末尾に「/」をつけた場合
「ディレクトリの中身を同期する」
具体的な実行結果の違いは、以下の図を参考にしてほしい。
中身だけ同期させると言うことは、仮にファイルが100件あったとして、
それらが同期先のディレクトリ内に100件羅列されてしまう事態になる。
だから、同期元パスのディレクトリの最後に「/」つけるかつけないか、とても大事。
反対に同期先パスの最後の「/」はあっても無くても結果は変わらない。
rsyncコマンドを使うメリット
最後に、rsyncコマンドを使用することのメリットを、筆者なりにまとめて終わりにする。
- サーバ間でcpコマンド的なことができてしまう
- 他サーバへのバックアップがコマンドだけでできてしまう
①サーバ間でcpコマンド的なことができてしまう
同じPC内であればcpコマンドを使えば良いが、サーバ間ではrsyncが必要。
②他サーバへのバックアップがコマンドだけでできてしまう
またサーバのイメージをバックアップとかするほどでもないとき(ディレクトリ単位)とかはrsyncでサクッとバックアップが取れる。
その他、rsyncに関連しそうな記事
https://www.itmedia.co.jp/enterprise/articles/0804/21/news013.html
[…] https://hara-chan.com/it/infrastructure/rsync/ […]