rsync - Backup Script
はじめに
"このファイルはいずれ使うと思うからバックアップしとこ"
なんて場当たり的にバックアップしたファイルは,大抵あとで思い出したいときに実は大して大事ではないものだったり,どこに保存したかわからなくなったり,何故バックアップしたのかわからない謎ファイルと化していたりすることが有る.
折角NFSサーバを作ったので適当にバックアップするスクリプトを書く.
スクリプト
バックアップリスト
バックアップリスト(Backup.list)を用意する. ディレクトリ末尾のスラッシュの扱いには注意が必要.
とりあえず一部のプロファイルだけを対象にした.
############################# # # Backup List # ############################# # # Directory # /Path/To/Directory # # Files and Directories Under The Path # /Path/To/Directory/ # # File # /Path/To/File # ############################# ## HOME Profiles /home/UserName/Desktop /home/UserName/Documents /home/UserName/Music /home/UserName/Pictures /home/UserName/Videos
バックアップスクリプト
rsyncするスクリプトを用意する. 内容は単にrsyncしているだけ.
#!/bin/bash ################################################# # # Backup Script # ################################################# # # ABOUT # Backup Files and Directories # ################################################# ## GlobalConfig ############# ScriptName=$(basename ${0}) ScriptPath=$(cd $(dirname ${0}) && pwd) LogFile=/Path/To/LogFile LogInfo () { echo "$(date '+%Y/%m/%d %T') [INFO] $@" | tee -a $LogFile } LogWarn () { echo "$(date '+%Y/%m/%d %T') [WARN] $@" | tee -a $LogFile } LogErr () { echo "$(date '+%Y/%m/%d %T') [ERR] $@" | tee -a $LogFile exit 1 } ## Init ##################### BackupList=/Path/To/Backup.list if [ ! -f $BackupList ]; then LogErr "BackupList is missing. : $BackupList" fi BackupDir=/Path/To/Backup/Directory if [ ! -d $BackupDir ]; then LogErr "BackupDir is missing. : $BackupDir" fi ## Return Code rc=0 ## Main ##################### LogInfo "Start" for Target in $(grep -v \# $BackupList); do LogInfo "Target: $Target" rsync -av --delete $Target $BackupDir --log-file $LogFile if [ $? -ne 0 ]; then LogWarn "rsync failed. : $Target" rc=1 fi done LogInfo "End" exit $rc
おわりに
今回は訳あってcron設定はしないけれど,場当たり的になバックアップは無くなるはず.
やはりRasPi-NFSはちと遅いな.