私は Linux (Ubuntu 12.04) Web サーバーを持っており、ローカル (同じマシン内) で差分バックアップを生成する cronjob を作成したいと考えています。
それは可能ですか? 差分バックアップでは、最初はすべてをコピーしますが、次回からは新しいファイルのみをコピーします。ただし、すべてを復元できる少なくとも 3 つまたは 4 つのバックアップなど、多くの時点のバックアップも必要です。
このページを確認しましたが、ツールが多すぎて、それぞれに落とし穴があるようです。https://help.ubuntu.com/community/BackupYourSystem#Types_of_Backup
たとえば、.tar.gz を保存する場合、サイズに制限があると言われています。
差別的でないとしても、簡単な提案があれば歓迎します。
答え1
バックアップ ディスクがあり/media/mydisk
、バックアップが必要な場合/home/user
、この小さなスクリプトを使用すると、異なるファイルのみを複数回保持しながら、10 履歴のバックアップを保持できます。
これにはバックアップディスクがExt4、XFSなどのPOSIXファイルシステムでフォーマットされている必要がありますが、いいえntfs、または脂肪!
#!/bin/bash
backRepo=/media/mydisk
backSrce=/home/user
backDest=home
backCopy=copy
backCount=9
[ -d "$backRepo/$backDest" ] || mkdir "$backRepo/$backDest"
cd $backSrce || exit 1
rsync -ax --delete --exclude '*~' --exclude '.DStore' . "$backRepo/$backDest/."
cd $backRepo
[ -d "$backCopy.$backCount" ] && rm -fR "$backCopy.$backCount"
for ((i=$backCount;i--;));do
[ -d "$backCopy.$i" ] && mv "$backCopy.$i" "$backCopy.$((i+1))"
done
((i++))
cp -al $backDest $backCopy.$i
これはcp -al
、ファイルをコピーするのではなく、ハードリンクを作成します。そのため、使用されるスペースはなくなります。
Rsyncは再作成する(書き込み時にコピー) 各ファイルが変更されるため、バックアップがローテーションされ、古いバージョンが保持されます。
答え2
rsyncはファイルをコピーするための優れたツールであり、ファイル内の変更されたビットのみをコピーし、上書きする前にコピー先のファイルをバックアップすることができます。
crontab
メインのバックアップを定期的に実行するように簡単に編集できますrsync
。その後、変更されたファイルのバックアップをコピーして、より多くのタイム ポイントを取得できます。または、実行前にバックアップされたデータをコピーして、rsync
各タイム ポイントの完全なイメージを取得することもできます。
後でファイルを他の場所にコピーする予定がない限り、 を使用する必要はないと思いますtar
。