« || »

 PHPとrsyncでディレクトリをローテーションバックアップ

2020. 1. 18 (土)

通常ならこういったバッチ処理は.sh等のシェルスクリプトで記述するところでしょうけど、個人的に使い慣れたPHPで書いています。

PHPで行なっているのはローテーションさせるためのバックアップ先ディレクトリ名の管理くらいで、バックアップ処理そのものは単純にrsyncに任せています。
–link-destオプションを使用していますので、初回はフルバックアップになりますが、2回目以降は変化のなかったファイルはハードリンク、変化のあったファイルのみが実体ファイルでの差分バックアップとなりますので、ローテーション回数が比較的多めでもディスク消費量は最小限で済みます。

PHPファイルですが、Webアプリケーションではないのでシェルから実行します。

 $ php /スクリプト設置パス/backup.php

YYYYMMDD_hhmmss.bak という名前のディレクトリにバックアップ、
YYYYMMDD_hhmmss.log にrsyncのログを保存します。

cronでスケジューリングする場合は以下のようになります。
設定例(毎日午前4時に実行)

 0 4 * * * php /スクリプト設置パス/backup.php 1> /dev/null

« || »

Comments are closed.