rsyncを用いたバックアップ処理の例
| 登録日 | :2024/08/06 04:33 |
|---|---|
| カテゴリ | :Linux |
rsyncを使って、月曜から土曜は増分バックアップを行い、日曜日にフルバックアップを行う方法を説明します。この方法では、ハードリンクを利用して効率的な増分バックアップを実現します。
- 1.バックアップ元とバックアップ先のディレクトリを設定します。
- 2.現在の日付と曜日を取得します。
- 3.バックアップ先に日付ごとのディレクトリを作成します。
- 4.日曜日(DOWが7)の場合、フルバックアップを実行します。
- 5.月曜から土曜(DOWが1-6)の場合:
- 6.最新の完全バックアップ(日曜日のバックアップ)を見つけます。
- 7.--link-destオプションを使用して増分バックアップを実行します。
- 8.--deleteオプションにより、ソースで削除されたファイルはバックアップからも削除されます
サンプルスクリプト
#!/bin/bash
# バックアップ元とバックアップ先のディレクトリを設定
SOURCE="/path/to/source"
DEST="/path/to/backup"
# 日付を取得
DATE=$(date +%Y-%m-%d)
DOW=$(date +%u) # 曜日を数字で取得 (1-7, 1が月曜)
# バックアップディレクトリの作成
BACKUP_DIR="$DEST/$DATE"
mkdir -p "$BACKUP_DIR"
# 日曜日(7)の場合はフルバックアップ
if [ "$DOW" -eq 7 ]; then
rsync -av --delete "$SOURCE/" "$BACKUP_DIR"
else
# 最新の完全バックアップを見つける
LATEST_FULL=$(find "$DEST" -maxdepth 1 -type d -name "*-7" | sort -r | head -n1)
# 増分バックアップの実行
rsync -av --delete --link-dest="$LATEST_FULL" "$SOURCE/" "$BACKUP_DIR"
fi
このスクリプトをcrontabに登録して毎日実行するようにします:
0 1 * * * /path/to/backup_script.sh
これにより、毎日午前1時にバックアップが実行されます。
注意点:
- バックアップ先に十分な空き容量があることを確認してください。
- 初回実行時は完全バックアップが行われます。
- このスクリプトは、ソースディレクトリの変更をバックアップに反映します。誤って削除したファイルも反映されるため、重要なデータは別途バックアップすることをお勧めします。
この方法により、効率的な増分バックアップと週1回のフルバックアップを実現でき、ファイルサーバのデータを安全に保護できます。
Appendix 実行テスト後
#!/bin/bash
# バックアップ元とバックアップ先のディレクトリを設定
SOURCE="/home"
DEST="/home/backup_dir"
# 日付を取得
DATE=$(date +%Y-%m-%d)
DOW=$(date +%u) # 曜日を数字で取得 (1-7, 1が月曜)
# バックアップディレクトリの作成
BACKUP_DIR="$DEST/$DATE"
mkdir -p "$BACKUP_DIR"
# 日曜日(7)の場合はフルバックアップ
if [ "$DOW" -eq 7 ]; then
rsync -av --delete "$SOURCE/" "$BACKUP_DIR"
else
# 最新の完全バックアップを見つける
LATEST_FULL=$(find "$DEST" -maxdepth 1 -type d -name "*-7" | sort -r | head -n1)
# 増分バックアップの実行
rsync -av --delete --link-dest="$LATEST_FULL" "$SOURCE/" "$BACKUP_DIR"
fi
実行すると、以下のようにステータスログが出力される
[root@nis1 backup]# /root/tools/backup/backup_script.sh
sending incremental file list
--link-dest arg does not exist:
backup_dir/2024-08-08/
backup_dir/2024-08-08/backup_dir/
backup_dir/2024-08-08/backup_dir/2024-08-08/
backup_dir/2024-08-08/backup_dir/n1001_test/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/.bash_history
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/.bash_logout
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/.bash_profile
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/.bashrc
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/test
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/test2
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/.cache/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/.mozilla/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/.mozilla/extensions/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/.mozilla/plugins/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/test_dir/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/test_dir/testfile
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-07/test_dir/test/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/.bash_history
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/.bash_logout
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/.bash_profile
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/.bashrc
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/test
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/test2
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/.cache/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/.mozilla/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/.mozilla/extensions/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/.mozilla/plugins/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/test_dir/
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/test_dir/testfile
backup_dir/2024-08-08/backup_dir/n1001_test/2024-08-08/test_dir/test/
backup_dir/2024-08-08/n1001/
backup_dir/2024-08-08/n1001/.bash_history
backup_dir/2024-08-08/n1001/.bash_logout
backup_dir/2024-08-08/n1001/.bash_profile
backup_dir/2024-08-08/n1001/.bashrc
backup_dir/2024-08-08/n1001/test
backup_dir/2024-08-08/n1001/test2
backup_dir/2024-08-08/n1001/.cache/
backup_dir/2024-08-08/n1001/.mozilla/
backup_dir/2024-08-08/n1001/.mozilla/extensions/
backup_dir/2024-08-08/n1001/.mozilla/plugins/
backup_dir/2024-08-08/n1001/test_dir/
backup_dir/2024-08-08/n1001/test_dir/testfile
backup_dir/2024-08-08/n1001/test_dir/test/
backup_dir/2024-08-08/n1002/
backup_dir/2024-08-08/n1002/.bash_history
backup_dir/2024-08-08/n1002/.bash_logout
backup_dir/2024-08-08/n1002/.bash_profile
backup_dir/2024-08-08/n1002/.bashrc
backup_dir/2024-08-08/n1002/.esd_auth
backup_dir/2024-08-08/n1002/.cache/
backup_dir/2024-08-08/n1002/.config/
backup_dir/2024-08-08/n1002/.config/pulse/
backup_dir/2024-08-08/n1002/.config/pulse/b7e56f9791684f3995f6aa5fcc70f6fb-card-database.tdb
backup_dir/2024-08-08/n1002/.config/pulse/b7e56f9791684f3995f6aa5fcc70f6fb-default-sink
backup_dir/2024-08-08/n1002/.config/pulse/b7e56f9791684f3995f6aa5fcc70f6fb-default-source
backup_dir/2024-08-08/n1002/.config/pulse/b7e56f9791684f3995f6aa5fcc70f6fb-device-volumes.tdb
backup_dir/2024-08-08/n1002/.config/pulse/b7e56f9791684f3995f6aa5fcc70f6fb-stream-volumes.tdb
backup_dir/2024-08-08/n1002/.config/pulse/cookie
backup_dir/2024-08-08/n1002/.mozilla/
backup_dir/2024-08-08/n1002/.mozilla/extensions/
backup_dir/2024-08-08/n1002/.mozilla/plugins/
backup_dir/2024-08-08/n1003/
backup_dir/2024-08-08/n1003/.bash_logout
backup_dir/2024-08-08/n1003/.bash_profile
backup_dir/2024-08-08/n1003/.bashrc
backup_dir/2024-08-08/n1003/.mozilla/
backup_dir/2024-08-08/n1003/.mozilla/extensions/
backup_dir/2024-08-08/n1003/.mozilla/plugins/
backup_dir/2024-08-08/n1004/
backup_dir/2024-08-08/n1004/.bash_history
backup_dir/2024-08-08/n1004/.bash_logout
backup_dir/2024-08-08/n1004/.bash_profile
backup_dir/2024-08-08/n1004/.bashrc
backup_dir/2024-08-08/n1004/.cache/
backup_dir/2024-08-08/n1004/.mozilla/
backup_dir/2024-08-08/n1004/.mozilla/extensions/
backup_dir/2024-08-08/n1004/.mozilla/plugins/
backup_dir/2024-08-08/n1005/
backup_dir/2024-08-08/n1005/.bash_logout
backup_dir/2024-08-08/n1005/.bash_profile
backup_dir/2024-08-08/n1005/.bashrc
backup_dir/2024-08-08/n1005/.mozilla/
backup_dir/2024-08-08/n1005/.mozilla/extensions/
backup_dir/2024-08-08/n1005/.mozilla/plugins/
/home/backup_dir に日付のフォルダが作成されて、バックアップが保存される。
[root@nis1 backup_dir]# pwd
/home/backup_dir
[root@nis1 backup_dir]# ls
2024-08-08
[root@nis1 backup_dir]# ls 2024-08-08/
backup_dir n1010 n1020 n1030 n1040 n1050 n1060 n1070 n1080 n1090 n1100
n1001 n1011 n1021 n1031 n1041 n1051 n1061 n1071 n1081 n1091 user01
n1002 n1012 n1022 n1032 n1042 n1052 n1062 n1072 n1082 n1092
n1003 n1013 n1023 n1033 n1043 n1053 n1063 n1073 n1083 n1093
n1004 n1014 n1024 n1034 n1044 n1054 n1064 n1074 n1084 n1094
n1005 n1015 n1025 n1035 n1045 n1055 n1065 n1075 n1085 n1095
n1006 n1016 n1026 n1036 n1046 n1056 n1066 n1076 n1086 n1096
n1007 n1017 n1027 n1037 n1047 n1057 n1067 n1077 n1087 n1097
n1008 n1018 n1028 n1038 n1048 n1058 n1068 n1078 n1088 n1098
n1009 n1019 n1029 n1039 n1049 n1059 n1069 n1079 n1089 n1099
[root@nis1 backup_dir]#