rsyncを使用した増分バックアップツール
backup.shは、rsyncを使用してディレクトリを効率的にバックアップするシェルスクリプトです。タイムスタンプ付きのバックアップを作成し、ハードリンクを使用して重複データを削減します。また、1ヶ月以上経過した古いバックアップを自動的に削除します。
- 増分バックアップ: rsyncの
--link-destオプションを使用して、変更されたファイルのみを保存 - タイムスタンプ管理:
YYYYMMDDHHMM形式でバックアップを整理 - 自動クリーンアップ: 1ヶ月以上前のバックアップを自動削除
- 重複実行防止: PIDファイルによるロック機構
- 柔軟なフィルタリング: include/excludeパターンのサポート
- ドライラン: 実際に実行する前に動作を確認可能
make installこれによりbackup.shが~/bin/にコピーされます。
make uninstallbackup.sh [OPTION] SRC DEST-e <pattern>: 除外するファイルパターンを指定-h: ヘルプを表示-i <pattern>: 含めるファイルパターンを指定-n: ドライラン(実際には実行せず、動作を確認)-v: 詳細出力
SRC: バックアップ元のディレクトリDEST: バックアップ先のディレクトリ
backup.sh /home/user/documents /mnt/backupbackup.sh -e '*.tmp' -e '.cache' /home/user/documents /mnt/backupbackup.sh -n -v /home/user/documents /mnt/backupbackup.sh -v /home/user/documents /mnt/backupバックアップは以下のような構造で保存されます:
/mnt/backup/
└── _home_user_documents/
├── 202501150900/
├── 202501151200/
└── 202501151800/
各ディレクトリ名はバックアップの日時を表します。
- ソースと宛先のディレクトリを検証
- PIDファイルで重複実行をチェック
- 最後のバックアップを特定
rsyncで新しいバックアップを作成(--link-destで前回からの変更のみ保存)- 1ヶ月以上前の古いバックアップを削除
- バックアップ元とバックアップ先は両方とも存在するディレクトリである必要があります
- 同じソースに対して同時に複数のバックアップを実行することはできません(PIDファイルによる制御)
- 古いバックアップの自動削除は1ヶ月を基準としています
このプロジェクトのライセンス情報については、リポジトリを参照してください。