2004年08月09日

rsync の使い方

rsync はファイルのコピーやディレクトリのコピーをするツールである.また,リモートホストにコピーすることもできる.同期を取ったり,バックアップをするために用いられる.ファイルの差分を検知して必要なファイルだけをコピーする仕組みが組み込まれているため効率が良い.
UNIXでのバックアップ

rsync で重要になってくるオプションに次のようなものがある.

-H, --hard-links preserve hard links
-v, --verbose increase verbosity
-a, --archive archive mode, equivalent to -rlptgoD

-r, --recursive recurse into directories
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-t, --times preserve times
-g, --group preserve group
-o, --owner preserve owner (root only)
-D, --devices preserve devices (root only)

--delete delete files that don't exist on the sending side
--delete-excluded also delete excluded files on the receiving side
--exclude=PATTERN exclude files matching PATTERN

いくつかのディレクトリを,/backupディレクトリ(当然別のディスクにある)にコピーするならば,次のようなスクリプト rsync.sh を実行すればよい.

#! /bin/sh

RSYNC=/usr/local/bin/rsync
OPTIONS="-Hav --delete --delete-excluded"

${RSYNC} ${OPTIONS} /etc /backup
${RSYNC} ${OPTIONS} /root /backup
${RSYNC} ${OPTIONS} /home /backup

EXCLUDE="--exclude /local/var/authdaemon"
${RSYNC} ${OPTIONS} ${EXCLUDE} /usr/local /backup

EXCLUDE="--exclude /var/run --exclude /var/qmail/queue/lock"
${RSYNC} ${OPTIONS} ${EXCLUDE} /var /backup

これをcronで定期的に実行すれば,簡単なバックアップとなる.

root# crontab -l
# 05:00 every day
0 5 * * * /root/rsync/rsync.sh > /root/rsync/log 2>&1