バックアップ · 1 min read · Dec 10, 2025

Rsnapshotの設定、スナップショットのアーカイブとDebian上のMySQLデータベースのバックアップ

Rsnapshotの設定、スナップショットのアーカイブとDebian上のMySQLデータベースのバックアップ

By Nedim Hadzimahmutovic < [email protected] >

このハウツーでは、Rsnapshotをインストールして設定し、スナップショットのアーカイブを有効にし、Debian上のMySQLデータベースをバックアップする方法を示します。

プログラムをapt-getユーティリティを使用してインストールします:

apt-get install rsnapshot

設定ファイルを編集します:

nano /etc/rsnapshot.conf

snapshot_rootをバックアップを保持したいパスに設定します:

snapshot_root   /var/cache/rsnapshot/

バックアップするディレクトリ/ファイルのリストを設定します。

backup  /etc/           localhost/

バックアップ間隔

この設定ファイルのこのセクションは、間隔のラベルと各レベルのスナップショットをいくつ保持するかを定義するためだけに使用されます。スナップショットがどれくらいの頻度で作成されるかは、cronを介して設定され実行されます。キーワードintervalの後には英数字のラベルが続き、その後に数値が続き、保持する間隔(スナップショット)の数を示します。間隔ラベルは一意であり、昇順でなければなりません。最小の間隔は最初にリストされる必要があります。

次の例では、6つの「毎時」スナップショットの後、最も古い「毎時」が削除されます。最上部のエントリ(この場合は「毎時」)はソースからコピーされ、残りのエントリは単に1つ上のレベルから最新のスナップショットにリンクします。

言い換えれば、1日に6回のバックアップ(4時間間隔)、7回のデイリーバックアップ(1週間)、4回のウィークリーバックアップ(1か月)を保持するには、次のように指定します:

interval        hourly  6
interval        daily   7
interval        weekly  4

間隔ラベル「hourly」、「daily」、「weekly」は、必要に応じて「daysago」、「weeksago」、「monthsago」に変更できます。

rsnapshot hourlyが手動またはcronによって実行されるたびに、新しいスナップショットが作成され、古いものが回転し、6つの最新のもの(hourly.0 - hourly.5)が保持されます。

バックアップポイント

設定ファイル内のバックアップポイントの例:

backup      /etc/      localhost/ 

バックアップポイントは「backup」という単語で始まり、/etc/の後にバックアップされるディレクトリの完全なパスが続き、localhostはsnapshot_root内のディレクトリです。localhostをサーバーに関連する任意の名前(サーバーの完全修飾ドメイン名など)に変更できます。

ローカルファイルシステムの完全なパスに加えて、ssh経由でrsyncを使用してリモートシステムをバックアップすることもできます。sshがインストールされ、有効になっている場合(cmd_sshパラメータを介して)、次のようにパスを指定できます:

backup      [email protected]:/etc/     example.com/

この機能が正しく機能するためには、example.comのrootユーザーに対してキーベースのログインが有効であり、パスフレーズがない必要があります。

バックアップスクリプト

Debianのutilsディレクトリには多くの例があります。これは/usr/share/doc/rsnapshot/examples/utils/にあります。

バックアップスクリプトは、各最小間隔で実行されます。

Cronを介したバックアップの実行

cronファイルは次の場所にあります:

/etc/cron.d/rsnapshot

デフォルトの内容:

# 0 */4     * * *     root    /usr/bin/rsnapshot hourly
# 30 3   * * *     root    /usr/bin/rsnapshot daily
# 0  3   * * 1     root    /usr/bin/rsnapshot weekly
# 30 2   1 * *     root    /usr/bin/rsnapshot monthly

バックアップを有効にするために、行のコメントを解除する必要があります。

最初の行は、cronに4時間ごとにcron-aptを実行するよう指示します。これはrsnapshot.confの毎時間隔設定と一致します。

設定のテスト:

設定ファイルに変更を加えるたびに、configtestを実行します:

rsnapshot configtest

以下のルールに注意してください:

  • 設定ファイルは要素間にタブが必要で、スペースはスクリプトの引数を表します
  • ディレクトリには末尾にスラッシュが必要です。例:

正しい: /home/

間違い: /home

スナップショットのアーカイブ

cp /usr/share/doc/rsnapshot/examples/utils/rsnaptar /usr/local/bin/

バックアップスクリプトがrootによって所有され、他の誰にも書き込み可能でないことを確認してください。

chown root.root /usr/local/bin/rsnaptar  
chmod o-w /usr/local/bin/rsnaptar

スクリプトを編集してディレクトリパスを設定します:

nano /usr/local/bin/rsnaptar

TAR_DIRをスナップショットがアーカイブされるパスに、SNAPSHOT_DIRをデイリースナップショットがある場所に設定します:

TAR_DIR="/home/user/dvd_backup"
SNAPSHOT_DIR="/var/cache/rsnapshot/daily.0"

毎時のサイクルが完了する必要があることに注意してください。そうしないと、デイリースナップショットが作成されません。

このスクリプトはファイルのgpg暗号化をサポートしています。無効にするには、/usr/local/bin/rsnaptarの次の行をコメントアウトします:

GPG="/usr/bin/gpg"

Cronを介した実行のスケジューリング

nano /etc/cron.daily/rsnaptar

追加:

#!/usr/bin/env bash
/usr/local/bin/rsnaptar [email protected]

注意:

    • このハウツーではファイルを暗号化するためのGPGオプションを使用していません。これが必要な場合は、より良いセキュリティのためにファイル暗号化を含むようにハウツーを更新できます。
    • デフォルトではスクリプトはスタンドアロンで実行されますが、rsnapshot自体を介してbackup_scriptとして実行するように変更できます。

Rsnapshot: MySQLデータベースのバックアップ

mysql-clientがインストールされていない場合はインストールします。これにより、mysqldumpユーティリティが提供されます:

# apt-get install mysql-client
# cp /usr/share/doc/rsnapshot/examples/utils/backup_mysql.sh /usr/local/bin/

バックアップスクリプトがrootによって所有され、他の誰にも書き込み可能でないことを確認してください。

chown root.root /usr/local/bin/backup_mysql.sh  
chmod o-w /usr/local/bin/backup_mysql.sh

このスクリプトは、すべてのデータベースを単一のファイルにバックアップするために設計されています。

スクリプトを編集します:

nano /usr/local/bin/backup_mysql.sh

次の行を置き換えます:

/usr/bin/mysqldump --all-databases > mysqldump_all_databases.sql

次のように:

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf --all-databases > mysqldump_all_databases.sql

単一のデータベースをダンプする必要がある場合は、次の行を使用します:

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf DATABASE > DATABASE.SQL

Rsnapshotにスクリプトを追加

rsnapshot設定を編集します:

nano /etc/rsnapshot.conf

バックアップポイント / スクリプトの下に次の行を追加します:

backup_script        /usr/local/bin/backup_mysql.sh    localhost/mysqldump/

設定をテストします:

rsnapshot configtest
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。