サイトバックアップ(1)

新規にサイトを制作する場合、旧サイトのデータバックアップのリクエストがある。

sshでログインし、ドキュメントルートの下を
丸ごと、

zip -r public_html.zip public_html

で一気に固め、FTP等でバックアップ用のサイトに持っていき、そのまま解凍できるのが理想的ではあるが、一般にそううまくはいかない。

そこで、ドキュメントルートの直下に、
バックアップ用のフォルダを作成し、そこのperlスクリプトを呼ぶことにより、
適当なサイズで、分割圧縮することを試みる。

前提条件として
・perlスクリプトがowner権限で動作すること。
・perlのsystem関数を利用して、
(du)
(which)
(touch)
(grep)
(wc)
(sed)
find
xargs
zip
が利用できること。

本当は、phpを使用したいのだが、
昔のサーバーだと、phpがowner権限で動作しない場合があり、
その場合、プログラムの実行や、ファイルの作成が面倒なので
perlを使用する。

perlスクリプトは、一行目にperlの実行パスを記述する必要があるが、

#!/usr/local/bin/perl

で、動作しないサーバーは珍しい。

てなわけで、動作環境のチェックはphpで行い、
実際の圧縮処理は、perl経由のunixコマンドで行うこととする。

ディレクトリ名は仮決めで、
.oldbackup
とする。

バックアップ元のファイルリストは、こんな感じで作成できるはず。

zipファイルのサイズ、圧縮ファイル作成の実行時間に制約がなければ、
こんな感じで、docroot.zipは作成できるはず。

分割圧縮のために必要なCGIは、
指定したファイル名(default:filelist.txt)のファイルリストをN分割したとして、連番のzipファイルを作成するCGI
指定したファイル名(default:filelist.txt)のファイルリストをN分割した場合のM番目のfileリストを、更にN1分割したとして
連番のzipファイルを作成するCGI

実際にfilelist.txtをN分割するCGI
filelist.txtをある指定したディレクトリ以下のファイルとそれ以外で2分割するCGI

こんな感じかな。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です