rsnapshot は素晴らしい無料の Linux バックアップ ユーティリティです。 ローカルとリモートの両方のファイル システムの rsync バックアップを実行します。
これは 2 つの記事のシリーズです。この記事では、rsnapshot ユーティリティをインストールして構成し、rsync バックアップ を作成する方法を確認します。 ローカル ファイル システムの。次の記事では、rsnapshot ユーティリティをセットアップしてリモート ファイル システムの rsync バックアップを作成する方法を確認しましょう。
rsnapshot rsync とハード リンクの組み合わせを使用して、完全バックアップと増分バックアップを維持します。 rsnapshot のセットアップと構成が完了したら、メンテナンスはまったく必要ありません。 rsnapshot は、古いバックアップの削除とローテーションを自動的に処理します。
また、必要なディスク容量も非常に少なくなります。最初の完全バックアップは、元のファイルとディレクトリと同じサイズになります。後続の rsnapshot フル バックアップは、以前のフル バックアップから変更されたファイルのみをバックアップするため、少ないスペースしか必要としません。
1. rsnapshot Linux バックアップ ユーティリティをダウンロード
以下に示すように、rsnapshot.org から rsnapshot ユーティリティをダウンロードします。
# cd /usr/src # wget http://www.rsnapshot.org/downloads/rsnapshot-1.3.1.tar.gz # tar xvfz rsnapshot-1.3.1.tar.gz # cd rsnapshot-1.3.1
2. rsnapshot をインストールして、Linux ディレクトリをバックアップします
./configure を使用して rsnapshot Linux バックアップ ユーティリティをインストールし、以下に示すように make install します。
# ./configure --sysconfdir=/etc checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes config.status: creating t/rsync.t config.status: creating t/gnu_cp.t config.status: creating t/relative_delete_bugfix.t Type "make install" to install the program. After rsnapshot is installed, don't forget to copy /etc/rsnapshot.conf.default to /etc/rsnapshot.conf # make install /usr/bin/pod2man -c '' -n 'rsnapshot' -r '' rsnapshot > rsnapshot.1 /usr/bin/pod2man -c '' -n 'rsnapshot-diff' -r '' rsnapshot-diff > rsnapshot-diff.1 make[1]: Entering directory `/usr/src/rsnapshot-1.3.1' test -z "/usr/local/bin" || mkdir -p -- "/usr/local/bin" /usr/bin/install -c 'rsnapshot' '/usr/local/bin/rsnapshot' /usr/bin/install -c 'rsnapshot-diff' '/usr/local/bin/rsnapshot-diff' test -z "/etc" || mkdir -p -- "/etc" /usr/bin/install -c -m 644 'rsnapshot.conf.default' '/etc/rsnapshot.conf.default' test -z "/usr/local/man/man1" || mkdir -p -- "/usr/local/man/man1" /usr/bin/install -c -m 644 './rsnapshot.1' '/usr/local/man/man1/rsnapshot.1' /usr/bin/install -c -m 644 './rsnapshot-diff.1' '/usr/local/man/man1/rsnapshot-diff.1' make[1]: Leaving directory `/usr/src/rsnapshot-1.3.1'
ここで、rsnapshot Linux バックアップ ユーティリティに付属するデフォルトの構成ファイルに基づいて、新しい rsnapshot.conf を作成します。
# cp /etc/rsnapshot.conf.default /etc/rsnapshot.conf
3. rsnapshot を構成し、バックアップ ソース ディレクトリを指定する
/etc/rsnapshot.conf を開き、次の行のコメントを外します。
# vi /etc/rsnapshot.conf cmd_cp /bin/cp cmd_ssh /usr/bin/ssh cmd_du /usr/bin/du cmd_rsnapshot_diff /usr/local/bin/rsnapshot-diff logfile /var/log/rsnapshot
コピー先のバックアップ ディレクトリを定義します 以下に示すように、/etc/rsnapshot.conf で。この例では、
- /etc – バックアップするソース ディレクトリ
- localhost/ – バックアップが保存される宛先ディレクトリ。最後の手順で示したように、このディレクトリは /.snapshots/{internal.n}/ ディレクトリの下に作成されることに注意してください。
# vi /etc/rsnapshot.conf backup /etc/ localhost/
注: /etc/ を、バックアップしたい適切なディレクトリに変更します。
4. rsnapshot 構成のテスト
構成テストを実行して、rsnapshot が適切にセットアップされ、Linux rsync バックアップを実行する準備ができていることを確認します。
# rsnapshot configtest Syntax OK
5. rsnapshot の 1 時間ごとのバックアップ構成を確認する
Linux ディレクトリまたはファイルをさまざまな間隔でバックアップできます。デフォルトでは、毎時および毎日のバックアップが構成されています。
時間単位のバックアップ構成を確認してください。
# rsnapshot -t hourly echo 6490 > /var/run/rsnapshot.pid mkdir -m 0700 -p /.snapshots/ mkdir -m 0755 -p /.snapshots/hourly.0/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \ /.snapshots/hourly.0/localhost/ mkdir -m 0755 -p /.snapshots/hourly.0/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \ /.snapshots/hourly.0/localhost/ mkdir -m 0755 -p /.snapshots/hourly.0/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \ /usr/local /.snapshots/hourly.0/localhost/ touch /.snapshots/hourly.0/
6. rsnapshot の日次バックアップ構成の確認
毎日の rsnapshot cwrsync バックアップ プロセスが適切に構成されていることを確認します。
# rsnapshot -t daily echo 6493 > /var/run/rsnapshot.pid mkdir -m 0700 -p /.snapshots/ /.snapshots/hourly.5 not present (yet), nothing to copy
7.無効な rsnapshot バックアップ間隔
毎月のバックアップ間隔はありません。そのため、毎月のバックアップ構成を確認しようとすると、次のようなメッセージが表示される場合があります — ERROR:Interval "monthly" unknown, check /etc/rsnapshot.conf
# rsnapshot -t weekly echo 6495 > /var/run/rsnapshot.pid mkdir -m 0700 -p /.snapshots/ /.snapshots/daily.6 not present (yet), nothing to copy # rsnapshot -t monthly echo 6496 > /var/run/rsnapshot.pid mkdir -m 0700 -p /.snapshots/ ---------------------------------------------------------------------------- rsnapshot encountered an error! The program was invoked with these options: /usr/local/bin/rsnapshot -t monthly ---------------------------------------------------------------------------- ERROR: Interval "monthly" unknown, check /etc/rsnapshot.conf
8. rsnapshot の Crontab エントリを追加
rsync の毎時および毎日のバックアップ構成が rsnapshot cwrsync ユーティリティで適切にセットアップされていることを確認したら、次に示すように、この子犬を crontab にセットアップします。
# crontab -e 0 */4 * * * /usr/local/bin/rsnapshot hourly 30 23 * * * /usr/local/bin/rsnapshot daily
crontab のセットアップと構成方法については、Unix crontab の例の記事をご覧ください。
9. rsnapshot ジョブを手動で検証する (1 回限りのチェックアップ)
初めて、rsnapshot バックアップを手動で実行して、期待どおりに機能していることを確認することをお勧めします。
デフォルトでは、rnspashot ユーティリティによって作成されたすべての rsync バックアップは、/.snapshots ディレクトリに保存されます。
rsnapshot が実行されていないため、以下に示すように、このディレクトリは存在しない可能性があります。
# ls -al /.snapshots/ ls: /.snapshots/: No such file or directory
以下に示すように、rsnapshot バックアップ ユーティリティを手動で実行して、時間単位の構成を行います。
# /usr/local/bin/rsnapshot hourly
毎時バックアップを実行したので、rsnapshot Linux バックアップ ユーティリティは、hourly.0 ディレクトリを含む次の /.snapshots ディレクトリを作成します
/.snapshots/hourly.0/ ディレクトリをブラウズして、手順 3 で構成したファイルとディレクトリが適切にバックアップされていることを確認します。
# ls -al /.snapshots/ total 16 drwx------ 3 root root 4096 Jul 13 05:07 .s drwxr-xr-x 25 root root 4096 Jul 13 05:07 .. drwxr-xr-x 3 root root 4096 Jul 13 05:07 hourly.0 # ls -al /.snapshots/hourly.0/localhost/etc/ total 2516 drwxr-xr-x 93 root root 12288 Jul 13 05:05 . drwxr-xr-x 3 root root 4096 Jul 13 05:07 .. -rw-r--r-- 1 root root 15288 Mar 13 2008 a2ps.cfg -rw-r--r-- 1 root root 2562 Mar 13 2008 a2ps-site.cfg drwxr-xr-x 4 root root 4096 Oct 31 2008 acpi -rw-r--r-- 1 root root 44 Jan 16 10:43 adjtime drwxr-xr-x 4 root root 4096 Jan 16 10:36 alchemist -rw-r--r-- 1 root root 2155 Mar 19 08:22 aliases -rw-r----- 1 root smmsp 12288 Mar 19 08:22 aliases.db
次の記事では、rsnapshot ユーティリティを使用して複数のリモート ホストをバックアップする方法を確認しましょう。