Linux入門|rsyncコマンドで差分バックアップ(同期)
- 公開日:2020/04/09
- 更新日:2020/04/09
- 投稿者:n bit
Linuxでrsyncコマンドを使ってディレクトリ間の差分バックアップ(同期)を行う方法について解説。今回はubuntuサーバで内蔵HDDのデータを外付けHDDに差分バックアップしました。基本的なコマンドはどの構成でも同じです。
この記事は約 分で読めます。(文字)
rsyncコマンド
rsyncコマンドはディレクトリ間の同期を行うために用意されたLinuxコマンド。ローカル環境内のディレクトリ同期はもちろん、ネットワーク環境でのディレクトリ同期も行えます。
rsyncコマンドの基本的な使い方
rsyncコマンドの基本的な利用方法は以下の通り。
$ rsync オプションコマンド <コピー元ディレクトリ> <コピー先ディレクトリ>
オプションコマンド
rsyncコマンドで利用できるオプションコマンドは以下の通り。
コマンド | フルコマンド | オプション内容 |
---|---|---|
-a | --archive | アーカイブモード。(オプション「-rlptgoD」相当) |
-u | --update | コピー元とコピー先を比較し、追加・更新されたファイル、ディレクトリのみをコピー。コピー先のファイルが最新の場合はスキップ。 |
-b | --backup | バップアップファイルを作成。 |
-v | --verbose | 処理内容に関する情報を表示。 |
--delete | コピー元にないディレクトリやファイルをコピー先から削除。 | |
--existing | 更新分のみコピー先に反映。追加分はスキップ。 | |
--exclude=PATTERN | 除外パターンに一致するファイルを除外。 | |
--exclude-from=FILE | ファイルに記述された除外パターンに一致するファイルを除外。 |
「-a アーカイブモード」で有効になるオプションコマンド
コマンド | フルコマンド | オプション内容 |
---|---|---|
-r | --recursive | ディレクトリを再帰的に処理。再帰処理(サブディレクトリが存在した場合は、そのディレクトリも処理する) |
-l | --links | シンボリックリンクをシンボリックリンクのままコピー。 |
-p | --perms | パーミッションを維持。 |
-t | --times | タイムスタンプを維持。 |
-g | --group | 所有グループを維持。 |
-o | --owner | オーナーを維持。 (自分以外の所有者を保持するにはroot権限が必要) |
--devices | デバイスを維持。 (root権限が必要) |
rsyncコマンドを使った差分バックアップ
基本コマンドとオプションコマンドを組み合わせて理想的な差分バックアップ環境を構築。rsyncコマンドを使った差分バックアップにより最小限の時間で完了します。
上記で紹介したオプションコマンド以外にも数多くありますが、ポイントは「-u」オプションコマンドを使うことで、2回目のバックアップ以降コピー元のディレクトリとコピー先のディレクトリを比較し新しく追加・更新されたファイルやディレクトリのみを抽出してコピーできる。
$ rsync -u <コピー元ディレクトリ> <コピー先ディレクトリ>
Note
1回目はすべてのデータがコピーされるので通常のコピーと同じ時間がかかります。
削除項目の同期も行う場合は--deleteオプションコマンドも付与しておきましょう。
$ rsync -u --delete <コピー元ディレクトリ> <コピー先ディレクトリ>
ディレクトリ内の階層が深く再帰処理(サブディレクトリが存在した場合は、そのディレクトリも処理する)が必要な場合は-aオプションコマンドの後に-rを付与します。
$ rsync -aru --delete <コピー元ディレクトリ> <コピー先ディレクトリ>
rsyncの差分バックアップコマンド実行例
削除項目も同期したディレクトリ間の差分バックアップコマンド実行例。バックアップ元のディレクトリとバックアップ先のディレクトリの内容を差分で常に同じ状態に保ちます。
ディレクトリごとバックアップする場合
ディレクトリごとコピーバックアップする場合はディレクトリ名の後ろに【 / (スラッシュ)】をつけません。コピー先にディレクトリが存在しない場合は自動的に生成されます。
「mydir」ディレクトリを外付けHDD「diskA」内の「BackUP」ディレクトリ内に差分バックアップするケース
sudo rsync -aru --delete mydir /media/USER_NAME/diskA/BackUP/
ディレクトリ内のファイルやフォルダをコピーする場合
ディレクトリ内のファイルやフォルダのみをコピーバックアップする場合はディレクトリ名の後ろに【 / (スラッシュ)】をつけます。
「mydir」ディレクトリ内のファイルやフォルダを外付けHDD「diskA」内の「BackUP」ディレクトリ内に差分バックアップするケース
sudo rsync -aru --delete mydir/ /media/USER_NAME/diskA/BackUP/
今日のdot
今回はLinuxでrsyncコマンドを使ったディレクトリ間の差分バックアップ(同期)方法について解説しました。rsyncコマンドを使った差分バックアップで処理時間を最小限に抑えることができますので、こまめなバックアップを行うようにしましょう。