新規にサイトを制作する場合、旧サイトのデータバックアップのリクエストがある。
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
こんな感じかな。