6時50分サーバーrsyncでHDDを定期バックアップこのWordpressを運用してる僕の自宅サーバーですが、NASとしての役割もあるので、システム用のSSDとは別に2TBのファイルサーバー用HDDが積んであります。今回バックアップ用に4TBのHDDを増設したので、2TBのHDDのデータをrsyncを使って4TBのHDDに定期的にバックアップされるようにしました。スポンサーリンク仕様こんな具合で動作すればいいかなって感じで決めます毎日午前4時にバックアップが実行される前回からの差分のみバックアップを行う古いバックアップは自動で削除するrsyncとハードリンクrsyncでバックアップをする際に、–link-destオプションで前回のバックアップフォルダを指定すると、前回から変更のなかったファイルは前回のバックアップからのハードリンクとなり、ディスク容量を節約してくれます。これだけで簡易的な差分バックアップになるのです。ハードリンクではリンク元のファイルが削除されてもリンク先のファイルはそのまま使えるので、フルバックアップとか考えずに、古いバックアップはそのまま消しても大丈夫です。これを使うとバックアップがとっても楽にできます。古いバックアップの削除というわけで、古くなったバックアップは容赦なくrmしていきましょう。ちなみに、削除する条件ですが、残すバックアップを以下に定め、これらに当てはまらないものを削除するようにしています。当日のバックアップ前日のバックアップ前々日のバックアップ当月の1日のバックアップ当月の9日のバックアップ当月の16日のバックアップ当月の24日のバックアップ先月の1日のバックアップ先月の9日のバックアップ先月の16日のバックアップ先月の24日のバックアップ2ヶ月前の1日のバックアップ3ヶ月前の1日のバックアップ4ヶ月前の1日のバックアップ5ヶ月前の1日のバックアップ6ヶ月前の1日のバックアップスクリプトでは、まずはバックアップと削除を行うスクリプトを書きましょう。$pdonefisourseがバックアップ元、destinationがバックアップ先です。Digitalの物なので、wd2tやwd4tという名前にしてあります)7〜11行目で過去のバックアップ一覧を取得して12行目のif文は過去のバックアップがあるかどうかをチェックしています。過去にバックアップがされていない場合は13行目で普通にバックアップが行われ、過去のバックアップがある場合は15行目で–link-destを指定した差分バックアップが行われます。あとは17〜33行目で残すバックアップの一覧を生成して、35〜42で残すバックアップに存在しない日付のバックアップデータを削除しています。ちなみに、2重のforループになっているのは、シェルスクリプトだと集合演算が面倒そうだったのでこうなりました。今回バックアップ先に選んでいるwd2t_backupというディレクトリはrootからしかアクセスできないようにしてあるので、rootのcronで実行する必要があります。-eを実行してcronを設定します。/root/bin/wd2t_backup.shこうすれば毎日午前4時にwd2t_backup.shが実行されるようになります。現状バックアップを始めてからまだそんなに時間が経っていないためバックアップは少ないですが、うまくバックアップできてそうですね。ファイルの中身が存在していることも確認してます。システムのバックアップを取るにはrsyncだけでは不足かもしれませんが、個人のファイルサーバーのバックアップ程度ならこれで十分いけるのではないでしょうか。バックアップは大事ですよ。共有この記事が役に立ったならば、シェアしていただけると嬉しいです。–deleteオプションはバックアップ先として既に存在するディレクトリを指定した場合に意味を持つものですので、1日1回の実行で常にバックアップ先ディレクトリが日付で変わるこの使い方の場合、–deleteオプションを付けても意味はありません。SDカードの扱えるLinuxマシンが必要です。