$ rsync -av /コピー元 /コピー先
フルパスで行けた。
差分バックアップについては、
rsync -av --delete --link-dest=../<<比較元>> <<バックアップ元>> /<<バックアップ先>>
で行ける。(比較元のパスはバックアップ先から相対パスで指定すること)
cronで毎日稼働させるようであれば、次のように修正して稼働させればよい。
既に先人が偉大な資料を残してくれているので、参考に作成した。
--link-dest コマンド:インクリメンタルバックアップ
ハードリンクを作ってくれるので、ディスク圧迫を防げるので、コマンド採用している。
Webエンジニア・インフラエンジニアゐくをの日常 様のほぼそのままです。
詳しくは、この方のWEBサイトを確認してください。
□□□□□□シェルスクリプトの内容ここから□□□□□□□
#!/bin/bash
# バックアップ先を指定
back_up_dir=/<<バックアップ先のディレクトリのパス>>/dailyBack
mkdir -p $back_up_dir
# バックアップログ名
backup_log=/<<ログを残すディレクトリ>>/log/rsync_backup.log
rm -f $backup_log
touch $backup_log
chmod 600 $backup_log
# エラー処理 あった方がよさそうなので、そのまま使わせて頂いた。
error_exit () {
exit 1
}
# バックアップ実行
echo "毎日のバックアップ開始" >> $backup_log
#このあたりは素敵な感じ。当初別の方法で書いたが、ゐくをさんの方法の方が分かりやすいので、パクった。
latest=`ls -t $back_up_dir | grep backup | head -1`
newly=`date +%Y%m%d`backup
mkdir $back_up_dir/$newly
rsync -av --delete --link-dest=../$latest /<<バックアップ元のディレクトリ>> $newly/$latest >>
#ここから下もそのまま利用させて頂いた。
$backup_log 2>&1
code=$?
if [ $code -ne 0 ]; then
cat $backup_log | mail -s "BACKUP NG CODE IS $code" root
rm -rf $back_up_dir/$newly
error_exit
fi
echo "毎日のバックアップ完了" >> $backup_log
□□□□□□□□ここまで□□□□□□□□□
0 件のコメント:
コメントを投稿