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)