ここでは自作のスクリプトなどを紹介していきます。自由に使っていただいてかまいませんが、無保証です。自己責任でお試しください。
bashスクリプトです。bashの場所は環境に合わせて変更してください。
実行ユーザのホームディレクトリをバックアップします。~/backup/(なければ作成)に圧縮ファイルを作成します。~/backup/log/の中に作られるバックアップログを見れば、いつどのファイルがバックアップされたかが分かります。
前回実行時から変更のないファイルは、バックアップしません。-fをつけて実行すると、強制的にフルバックアップになります。
~/backup/ignoreにディレクトリ名を書いておくと、そのディレクトリはバックアップの対象外になります。
#!/usr/local/bin/bash
#usrbak
#author: mit (mit@atcake.com)
#ホームディレクトリの差分バックアップを行うスクリプト
#$HOME/backup/ignoreに記述したディレクトリは無視される
#-fオプションによりフルバックアップ
backup=${HOME}/backup
lastlog=${backup}/.lastlog
log=${backup}/log
ignore=${backup}/ignore
exitflag="no"
#引数をチェックする
[ $# != 1 -a $# != 0 ] && exitflag="yes"
[ $# = 1 -a "$1" != "-f" ] && exitflag="yes"
if [ ${exitflag} = "yes" ]; then
echo "Parameter invalid"
echo "Usage: usrbak [-f]"
exit 1
fi
#ディレクトリとファイルをチェックする
[ -d ${backup} ] || mkdir ${backup}
[ -d ${log} ] || mkdir ${log}
if [ ! -f ${ignore} ]; then
touch ${ignore}
echo "${backup}" > ${ignore}
echo "${HOME}/.mozilla/*/Cache" >> ${ignore}
echo "${HOME}/.phoenix/*/Cache" >> ${ignore}
fi
#無視するディレクトリのリストを作成する
ignorelist=`cat ${ignore}`
for dir in ${ignorelist}
do
param="${param} -o -path ${dir} -prune"
done
#検索し結果をファイルに出力する
if [ -f ${lastlog} -a $# = 0 ]; then
find ${HOME} ! -type d -newer ${lastlog} \
-print${param} > ${lastlog}.tmp
full=""
else
find ${HOME} ! -type d -print${param} > \
${lastlog}.tmp
full="full-"
fi
#圧縮ファイルとログファイルを作成する
day=`date +"%Y%m%d-%H%M"`
tar -cz -T ${lastlog}.tmp -f \
${backup}/${full}${day}.tar.gz &> /dev/null
[ -f ${lastlog} ] && rm -f ${lastlog}
mv ${lastlog}.tmp ${lastlog}
cp ${lastlog} ${log}/${full}${day}