rdiff-backup - Linux 用のリモート増分バックアップ ツール
rdiff-backup は、ローカル/リモート増分バックアップ用の強力で使いやすい Python スクリプトで、Linux、Mac OS X、Cygwin などの POSIX オペレーティング システムで動作します。これは、ミラーと増分バックアップの優れた機能を組み合わせたものです。
重要なのは、サブディレクトリ、dev ファイル、ハード リンク、およびアクセス許可、uid/gid 所有権、変更時刻、拡張属性、ACL、リソース フォークなどの重要なファイル属性を保持することです。一般的な rsync バックアップ ツールと同様に、パイプ経由で帯域幅効率の高いモードで動作します。
rdiff-backup は、SSH を使用してネットワーク経由で単一のディレクトリを別のディレクトリにバックアップします。これは、データ転送が暗号化されているため安全であることを意味します。 (リモート システム上の) ターゲット ディレクトリはソース ディレクトリの正確なコピーになりますが、追加の逆差分はターゲット ディレクトリ内の特別なサブディレクトリに保存されるため、少し前に失われたファイルを回復することができます。
依存関係
Linux で rdiff-backup を使用するには、次のパッケージをシステムにインストールする必要があります。
- Python v2.2以降
- librsync v0.9.7以降
- pylibacl および pyxattr Python モジュールはオプションですが、それぞれ POSIX アクセス制御リスト (ACL) と拡張属性のサポートに必要です。
- rdiff-backup-statistics には Python v2.4 以降が必要です。
Linux に rdiff-backup をインストールする方法
重要: ネットワーク経由で操作している場合は、両方のシステムに rdiff-backup をインストールする必要があります。できれば両方の rdiff-backup のインストールが正確である必要があります。同じバージョン。
このスクリプトは、主流の Linux ディストリビューションの公式リポジトリにすでに存在しており、以下のコマンドを実行するだけで、rdiff-backup とその依存関係をインストールできます。
Ubuntu に rdiff-backup をインストールする
Rdiff-Backup を Ubuntu Focal または Debian Bullseye 以降 (2.0 以降) にインストールするには。
sudo apt-get update
sudo apt-get install librsync-dev rdiff-backup
古いバージョンの Ubuntu バックポートにRdiff-Backup をインストールするには (バックポートされた 2.0 が必要です)。
sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backu
CentOS/RHEL 8 の場合
Rdiff-Backup を CentOS および RHEL 8 (COPR から) にインストールするには。
sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup
CentOS/RHEL 7 の場合
Rdiff-Backup を CentOS および RHEL 7 (COPR から) にインストールするには。
sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup
CentOS/RHEL 6 の場合
sudo yum install centos-release-scl
sudo yum install rh-python36 gcc libacl-devel
scl enable rh-python36 bash
sudo pip install rdiff-backup pyxattr pylibacl
echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup
Fedora について
Rdiff-Backup を Fedora 32 以降にインストールするには。
sudo dnf install rdiff-backup
Linux で rdiff-backup を使用する方法
前に述べたように、rdiff-backup は SSH を使用してネットワーク上のリモート マシンに接続します。SSH のデフォルトの認証はユーザー名/パスワード方式であり、通常は人間の介入が必要です。
ただし、スクリプトなどを使用して自動バックアップなどのタスクを自動化するには、SSH キーを使用した SSH パスワードレス ログインを構成する必要があります。これは、SSH キーにより 2 つの Linux サーバー間の信頼性が高まり、ファイルの同期や転送が容易になるためです。
SSH パスワードレス ログインをセットアップしたら、次の例でスクリプトの使用を開始できます。
ファイルを別のパーティションにバックアップする
以下の例では、/etc
ディレクトリを別のパーティションのバックアップ ディレクトリにバックアップします。
sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup
特定のディレクトリとそのサブディレクトリを除外するには、次のように --exclude
オプションを使用します。
sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup
以下のように --include-special-files
オプションを使用して、すべてのデバイス ファイル、FIFO ファイル、ソケット ファイル、およびシンボリック リンクを含めることができます。
sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup
ファイル選択のために設定できる重要なフラグが他に 2 つあります。 --max-file-size
サイズは指定されたサイズ (バイト単位) より大きいファイルを除外し、--min-file-size
サイズはバイト単位で指定したサイズより小さいファイルを除外します。指定されたサイズ (バイト単位):
sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup
ローカル Linux サーバー上のリモート ファイルをバックアップする
このセクションの目的のために、以下を使用します。
Remote Server (tecmint) : 192.168.56.102
Local Backup Server (backup) : 192.168.56.10
前に述べたように、両方のマシンに同じバージョンの rdiff-backup をインストールする必要があります。次のように両方のマシンのバージョンを確認してください。
rdiff-backup -V
バックアップ サーバー上で、次のようにバックアップ ファイルを保存するディレクトリを作成します。
mkdir -p /backups
次に、バックアップ サーバーから次のコマンドを実行して、リモート Linux サーバー 192.168.56.102 からディレクトリ /var/log/
と /root
のバックアップを作成します。 /backups
内のstrong>:
rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
rdiff-backup [email ::/root/ /backups/192.168.56.102_rootfiles.backup
以下のスクリーンショットは、リモート サーバー 192.168.56.102 上のルート ファイルとバック サーバー 192.168.56.10 上のバックアップ ファイルを示しています。
スクリーンショットに見られるように、backup
ディレクトリに作成された rdiff-backup-data ディレクトリに注目してください。このディレクトリには、バックアップ プロセスと増分ファイルに関する重要なデータが含まれています。
現在、サーバー 192.168.56.102 では、以下に示すように追加のファイルがルート ディレクトリに追加されています。
バックアップ コマンドをもう一度実行して、変更されたデータを取得しましょう。 -v[0-9]
(数値は冗長レベルを指定します。デフォルトはサイレントの 3) オプションを使用します。詳細機能を設定します。
rdiff-backup -v4 [email ::/root/ /backups/192.168.56.102_rootfiles.backup
また、/backups/192.168.56.102_rootfiles.backup ディレクトリに含まれる部分増分バックアップの数と日付を一覧表示するには、次のコマンドを実行します。
rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/
Cron を使用した rdiff-back バックアップの自動化
--print-statistics
を使用すると、バックアップが成功した後に概要統計を出力できます。ただし、このオプションを設定しない場合でも、情報はセッション統計ファイルから取得できます。このオプションの詳細については、マニュアル ページの STATISTICS セクションを参照してください。
また、–remote-schema フラグを使用すると、リモート コンピュータに接続する別の方法を指定できます。
ここで、次のようにバックアップ サーバー 192.168.56.10 上に backup.sh
スクリプトを作成することから始めましょう。
cd ~/bin
vi backup.sh
次の行をスクリプト ファイルに追加します。
#!/bin/bash
#This is a rdiff-backup utility backup script
#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only /"' [email ::/var/logs /backups/192.168.56.102_logs.back
#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
#append error message in ~/backup.log file
echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
exit 1;
fi
#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back
ファイルを保存して終了し、次のコマンドを実行してバックアップ サーバー 192.168.56.10 の crontab にスクリプトを追加します。
crontab -e
次の行を追加して、毎日深夜にバックアップ スクリプトを実行します。
0 0 * * * /root/bin/backup.sh > /dev/null 2>&1
crontab を保存して閉じます。これでバックアップ プロセスの自動化に成功しました。期待どおりに動作していることを確認します。
追加情報、詳細な使用オプション、例については、rdiff-backup のマニュアル ページを読んでください。
man rdiff-backup
rdiff-backup ホームページ: http://www.nongnu.org/rdiff-backup/
今のところはここまでです!このチュートリアルでは、Linux でローカル/リモート増分バックアップを行うための使いやすい Python スクリプトである rdiff-backup をインストールし、基本的に使用する方法を説明しました。以下のフィードバック セクションからご意見をお聞かせください。