目次

05 rsync

インストール

 # cd /usr/ports/net/rsync
 # make install

バージョン

rsync version 2.6.9

書式

rsync オプション [ホスト名:]コピー元ファイル/ディレクトリ名 [ホスト名:]コピー先ファイル/ディレクトリ名

オプション

-vバックアップ中にコピーしているファイル名を表示する
-r指定したディレクトリ以下を再帰的にコピーする
-lシンボリックリンクはそのままコピーする。指定しないとリンク先の実体がコピーされる
-pパーミッション属性をたもったままコピーする
-o所有者属性をたもったままコピーする。指定しないと属性はコピーしたユーザーのものになる
-gグループ属性をたもったままコピーする。指定しないと属性はコピーしたユーザーのものになる
-tタイムスタンプをたもったままコピーする
-Dデバイスファイルをたもったままコピーする
-zデータを圧縮して転送する
-u追加されたファイルだけをコピーする
-a上記のオプションで「rlptgoD」を同時に指定する
–existing更新されたファイルだけをコピーし、追加されたファイルは無視する
–deleteコピー元で削除されたファイルは、コピー先でも削除する。-aオプションと同時に指定するとコピー元とコピー先を同期できる
–exclude KEYKEYに一致するファイルはコピーしない。
「*.bak」「*~」など特定のファイルを除外したいときに使う。
空行と、';' または '#' で始まる行は無視されます。
–exclude FILE「–exclude」オプションと似ていますが、代わりに FILE に除外するファイルのリストを記述します。FILE の空行と、';' または '#' で始まる行は無視されます。
–statsコピーの結果を表示する。指定しないといっさいのメッセージは表示されない
-e ssh暗号化してファイルを転送する。コピー先としてネットワークでつながった別のホストを指定するときに使う
–numeric-idsユーザとグループの id 番号を転送して、転送後にマッピング
–forceディレクトリが空でなくても削除
–delete-excluded受信側にある exclud ファイルも削除
–inplacersync先にファイルが存在する場合上書きする
–sparse, -Ssparseファイルだった場合、sparseファイルとして扱う
–hard-links,-Hハードリンクはそのままコピーする。指定しないとリンク先の実体がコピーされる

オプション-e sshを使って、自動でホスト間のバックアップを行うにはSSHの設定が必要です。
06 sshでパスワードなしにログインするには

・/homeを/work/backupとしてバックアップし、同期させる。

 # rsync -av --delete /home /work/backup

・/homeをdynabookホストの/work/backupとしてバックアップし、同期させる。

 # rsync -av --delete /home dynabook:/work/backup

デーモンで立ち上げる場合

/etc/inetd.confに追加

 # vi /etc/inetd.conf
 rsync stream tcp nowait root /usr/local/bin/rsync rsyncd --daemon

/usr/local/etc/rsyncd.conf

 pid file = /var/run/rsyncd.pid
 log file = /var/log/rsync.log
 syslog facility = local5
 uid = root
 gid = wheel
 auth users=backup
 secrets file=/usr/local/etc/rsyncd.secrets
 hosts allow = 192.168.1.0/24
 hosts deny = *
 
 [all-home]
 comment      = home data
 path         = /home

/usr/local/etc/rsyncd.secrets

 # cat /usr/local/etc/rsyncd.secrets
 backup:xxback

ログファイル作成

 # touch /var/log/rsync.log

/etc/hosts.allowの編集

 rsync : 192.168.1. : allow

inetdから起動するのではなく、standaloneで起動した場合は、rsyncd.confにhosts allow = 192.168.1.0/24 のように書いてアクセス制御します。

実行例

・ローカルでバックアップをとる場合

 $ rsync -rv rsync://localhost/all-home /work/home_backup
 home            home data

・別ホストから、rsyncサーバに接続してバックアップを取る場合

 $ rsync -av rsync://userid@host.co.jp/all-home /work/home_backup

・別ホストから、rsyncサーバに接続してバックアップを取る場合

 # cat /etc/rsyncd.pass
 xxback
 
 # /usr/local/bin/rsync -auvvz --numeric-ids --password-file=/etc/rsyncd.pass --delete --force --delete-excluded rsync://backup@192.168.1.1/all-home /home
 --password-file ファイルからパスワードを得る
 --numeric-ids   ユーザとグループの id 番号を転送して、転送後にマッピング。 
 --force         ディレクトリが空でなくても削除

ソースから入れた場合の起動スクリプト

 #!/bin/sh
 case "$1" in
 start)
         # Start daemons.
         echo "Starting up rsyncd."
         /usr/bin/rsync --daemon
 ;;
 
 stop)
         # Stop daemons.
         echo "Shutting down rsyncd."
         /usr/bin/killall rsync
 ;;
 
 *)
 ;;
 
 esac
 
 exit 0

※デーモンで動かしている場合、rsyncd.confを編集後デーモンの再起動は必要ありません。