====== 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 KEY|KEYに一致するファイルはコピーしない。 \\ 「*.bak」「*~」など特定のファイルを除外したいときに使う。 \\ 空行と、';' または '#' で始まる行は無視されます。 |
|--exclude FILE|「--exclude」オプションと似ていますが、代わりに FILE に除外するファイルのリストを記述します。FILE の空行と、';' または '#' で始まる行は無視されます。 |
|--stats|コピーの結果を表示する。指定しないといっさいのメッセージは表示されない |
|-e ssh|暗号化してファイルを転送する。コピー先としてネットワークでつながった別のホストを指定するときに使う |
|--numeric-ids|ユーザとグループの id 番号を転送して、転送後にマッピング|
|--force|ディレクトリが空でなくても削除|
|--delete-excluded|受信側にある exclud ファイルも削除|
|--inplace|rsync先にファイルが存在する場合上書きする|
|--sparse, -S|sparseファイルだった場合、sparseファイルとして扱う|
|--hard-links,-H|ハードリンクはそのままコピーする。指定しないとリンク先の実体がコピーされる |
オプション-e sshを使って、自動でホスト間のバックアップを行うにはSSHの設定が必要です。
[[01_linux:01_net:06_sshd鍵]]
===== 例 =====
・/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を編集後デーモンの再起動は必要ありません。
{{tag>rsync}}