Red Hat Linux でリモートマシンへバックアップ(rsync)




Red Hat Linux で rsync コマンドを使ってリモートマシンへバックアップを取得する。

今回はSSHを利用して rsync の通信を行います。

この場合の書式は次の通り。
rsync -avz --delete -e ssh [バックアップ対象] [リモートマシン]:[バックアップ保存先]

オプションの説明
-a : アーカイブモード( -rlptgoD と同じ意味)。
-v : 情報を詳細に表示する。
-z : 転送中圧縮する。
--delete : 送信元に存在しないファイルはリモートマシン側で削除して同期する。
-e ssh : rsh の代わりに ssh を使用する。

-r : ディレクトリ内を再帰的にコピーする。
-l : シンボリックリンクの先をコピーする。
-p : ローカルのファイル権限をリモートにコピーする。
-o : リモートのファイルの所有者をローカルと同じにする。
-g : リモートのファイルのグループをローカルと同じにする。
-D : デバイスファイルもコピーする。ただし、スーパーユーザの時のみ有効。

実際に試してみます。
大前提として、リモートマシンで sshd が起動している必要があります。

試しに、ローカルマシン(1.1.1.1)の /var/log/audit/ 以下を
リモートマシン(1.1.1.100)の /tmp/test/ にバックアップしてみます。

# rsync -avz --delete -e ssh /var/log/audit/ 1.1.1.100:/tmp/test
The authenticity of host '1.1.1.100 (1.1.1.100)' can't be established.
RSA key fingerprint is cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanantly added '1.1.1.100' (RSA) to the list of known hosts.
root@1.1.1.100's password:xxxxxxxxxx
Connection closed by 1.1.1.100
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(463) [sender=2.6.8]

リモートマシン(1.1.1.100)へは ssh で初めてアクセスしたので接続の確認がされました。
その後、パスワードが聞かれたので入力したが、ssh のセッションが切れてしまった。

ちなみに、ローカルマシン(1.1.1.1)上で root で実行したため、
リモートマシンへも root でログインしようとした。
セッションが切られたのは、
リモートマシン(1.1.1.100)側でrootでのSSHによるログインを許可していないため。

仕方ないので、ユーザ指定して再度実行する。

# rsync -avz --delete -e ssh /var/log/audit/ test@1.1.1.100:/tmp/test
test@1.1.1.100's password:xxxxxxxxxx
building file list ... done
./
audit.log

sent 11864 bytes recieved 48 bytes 2165.82 bytes/sec
total size is 164700 speedup is 13.83

リモートへの /var/log/audit/audit.log のバックアップ成功。

差分バックアップなので連続して実行しても変更が無いためバックアップを実施しないはず。

# rsync -avz --delete -e ssh /var/log/audit/ test@1.1.1.100:/tmp/test
test@1.1.1.100's password:xxxxxxxxxx
building file list ... done

sent 71 bytes recieved 20 bytes 16.55 bytes/sec
total size is 164700 speedup is 1809.89

確かに何もバックアップされない。
差分バックアップが実現されていることが確認できた。

次に、rsync を利用して自動バックアップをしようと考えた場合、
上記の方法ではパスワードが聞かれてしまうため、
うまくいかない。

パスワードを聞かれないようにして自動でバックアップする方法は、こちらを参照。
Red Hat Linux でリモートマシンへバックアップ(rsync & cron)