今回はLinux系サーバーのバックアップによく使われるrsyncについての説明です。
rsyncとは、ファイルの同期を行うコマンドで、cpコマンドとは異なり差分確認を行う為、バックアップ等の処理を高速に行えます。
また、ネットワーク越しの同期も可能なので、バックアップ先にNAS等他のサーバーを指定することも出来ます。
書式は以下の通りです。
rsync <オプション> <コピー対象> <コピー先>
オプションについては、基本的には-a
を付けておけば全てバックアップ出来ます。
-a
オプションは権限情報やタイムスタンプ、リンク情報等もバックアップに含めるので、バックアップ時にはほぼ必須のオプションとなります。
利用方法次第では-a
オプションの次くらいに必須になりそうなオプションとしては、-v
オプションがあり、このオプションをつけることで詳細表示されるようになります。
-v
オプションに-h
オプションを追加するとさらに分かりやすく情報表示できるようになります。
また、-u
オプションを付けると、ファイルやディレクトリに更新があった場合のみコピーするので、より高速に処理するようになります。
ネットワーク越しにバックアップする場合のディレクトリ指定書式は以下の通りです。
以下の書式はrsyncに限らず、ネットワーク接続する場合に共通した書式となります。
<接続先ユーザー名>@<接続先IPアドレスまたはFQDN>:<ディレクトリフルパス>
当然ですが、ネットワーク越しにバックアップを実行する場合、コマンド投入後に接続先のパスワードを聞かれます。
rsyncコマンドの注意点として、コピー対象の指定時に、ディレクトリで終わる場合、ディレクトリ名の後ろに「/」を付ける場合と付けない場合で挙動が変わります。
例えば/home/user/
と指定した場合は、user
ディレクトリ配下の前ファイルがコピー先に指定したディレクトリ直下に配置されますが、/home/user
とした場合、コピー先ディレクトリ直下にuser
ディレクトリごとコピーされます。
$ls /home/user
a.txt
b.txt
#ディレクトリ名の後ろに「/」を付けた場合
$rsync -a /home/user/ /home/backup
$ls /home/backup
a.txt
b.txt
#ディレクトリ名の後ろに「/」を付けない場合
$rsync -a /home/user /home/backup
$ls /home/backup
user
$ls /home/backup/user
a.txt
b.txt
ちなみに余談ですがWindowsにもrsyncに代わるコマンドが存在していて、robocopy
コマンドがそれに値します。
ただし、当然ながらオプションの指定方法等がだいぶ異なります。
今回は以上です。