Linux rsync
(2009.1.25-2022.8.15)
rsyncコマンドでデータのバックアップをとる。
(環境) CentOS 5.1-5.5
(以下プロンプトが#ならroot,$なら普通のユーザー)
rsync
インストール
CentOS 5.1には必要なものは全て標準でインストールされている。また,必要なサービスも全て稼動している。
以下,バックアップ対象のサーバーをa.com,バックアップデータを保存するサーバーをb.comとする。
同期
a.comで次のコマンドを実行すると,a.comのabcディレクトリとb.comの/backup/a/abc/ディレクトリの内容が完全に一致するように,a.comからb.comにデータがコピーされる。(同期)。
# rsync -a --delete abc/ b.com:/backup/a/abc/
注意)
b.comの/backup/a/が存在しないとエラーになる。mkdir -p /backup/a/で/backup/a/を作っておくとよい。
コピー元abc/の末尾の/をつけないと,/backup/a/abcの中にabcというディレクトリが作られて同期が行われる。
除外したいファイル*は --exclude=ファイル名 で。これは幾つ書いても良いが,多い場合は次の--exclude-fromを使った方がよい。*以下,ファイルはファイルまたはディレクトリの意味。
除外したいファイル*が複雑な場合は,テキストファイルに記述して--exclude-from=テキストファイル名
一行に1ファイル書く。空白を含むファイル名*もダブルまたはシングルコーテーションで括らない。
先頭に/をつけると,コピー先ディレクトリ(例ではb.com:/backup/a/abc/)の階層という意味。/がないと任意の階層。
ワイルドカード*と?が使える。*は任意の文字,?は任意の一文字。
(例)/$RECYCLE.BIN コピー元ディレクトリの最上位の階層の/$RECYCLE.BINファイル*
(例)/System Volume Information コピー元ディレクトリの最上位の階層のSystem Volume Informationファイル*
(例)/OneDrive/.* コピー元ディレクトリの最上位の階層のOneDriveディレクトリ直下の.で始まるファイル*。
b.comのrootのパスワードを求められる。RSA鍵でsshログインできるように設定しておけば,rsyncで接続するする度にパスワードを求められなくなる。
RSAの秘密鍵を指定するには,-eオプションをつかう。例
rsync -e "ssh -i .ssh/id_rsa2" -a root@b.com:/root/ b/root/
復元
a.comでabcディレクトリを作成して次のコマンドを実行すると,b.comにバックアップディレクトリabcを復元することができる。
# mkdir abc
# rsync -a b.com:/backup/a/abc/ abc/
また,次のようにファイル単位の復元もできる。(aaa.txtは存在しなくてもよい)
# rsync -a b.com:/backup/a/abc/aaa.txt aaa.txt
定期実行 cron table
# crontab -e
で
分 時 日 月 曜日 コマンド
を記述すれば(使い方はviと同じ。/var/spool/cron/ユーザ名 に保存される。),コマンドを定期的に自動実行させることができる。$ crontab -eだとユーザーごと。
全て該当させる場合は * (アスタリスク,ワイルドカード)を指定する。例えば,
01 * * * * コマンド
は、全ての曜日、全ての月、全ての日、全ての時刻の 1分にコマンドを実行するということ。
分 時 日 月 曜日 指定の詳細
分 0~59で指定。*で全指定。
時 0~23で指定。*で全指定。
日 1~31で指定。*で全指定。
月 1~12で指定。*で全指定。
曜日 0~7で指定。0,7が日曜日、1が月曜日、6が土曜日。*で全指定
例
5 * * * * コマンド #毎時5分にコマンドを実行。
*/10 * * * * コマンド #10分ごとにコマンドを実行。
0,10,30 * * * 1-5 コマンド #月曜から金曜は毎時0分と10分と30分にコマンドを実行。
5 * * * 0,2,5-6 コマンド #日,火,木~土曜日の毎時5分にコマンドを実行。
リスト,範囲,間隔,複合:例にあるように,分時日月曜の指定には,リスト(0,10,30など),範囲(1-5など),間隔(*/10など),リストと範囲の複合を使うことができる。
参考
はじめてrsyncを使う方が知っておきたい6つのルール(http://www.itmedia.co.jp/enterprise/articles/0804/21/news013.html) 2008.8現在
rsyncを使った熟練者レベルのバックアップ(http://www.itmedia.co.jp/enterprise/articles/0707/19/news059_3.html) 2008.8現在
cronとは (http://tech.bayashi.net/svr/doc/cron.html) 2008.8現在