熱血!MULTI web
日記と情報を書いたりとか・・・
diary/20081009
PHPの「system」でZIP圧縮&ディレクトリのコピー
今回は、少し前のエントリーで「書く予定」と触れていたPHP関連の解説ネタについて書きます。
サーバにアップしているWikiクローンのデータバックアップやディレクトリの移動をすることになり、PHPの「system」という命令を使ったので、その辺りメモです。
「system」はLinuxのシェルコマンドを実行できます。
そしてコマンドにはZIP圧縮やディレクトリのコピーもあるので、前述の作業をそのコマンドで片付けようというわけです。
以下のサンプルは、「ロリポップ!」のレンタルサーバで試したものです。
ご利用のサーバ環境によって利用できない場合があります、あらかじめご了承ください。
ZIP圧縮には「zip」コマンドを利用します。
僕の場合は、指定ディレクトリ内のファイル・ディレクトリすべてをバックアップする必要があったので、以下のような処理をしました。
$backup_file = "作成するZIPファイルの名前";
$backup_dir = "バックアップしたいディレクトリ";
system("zip -r $backup_file $backup_dir");
ソースは実際に作業で使ったスクリプトから「system」の部分のみ抜粋です、「作成するZIPファイルの名前」と「バックアップしたいディレクトリ」の部分は任意に書き換えてください。
ZIPファイルの名前は“backup.zip”のように、拡張子は「zip」にします。
次は、ディレクトリのコピーです。
元となるディレクトリ内のファイル・ディレクトリもぜんぶ含めて新しいディレクトリへコピーします。
$old_dir = "コピー元となるディレクトリ";
$new_dir = "コピー先となるディレクトリ";
system('cp -r "' . $old_dir . '" "' . $new_dir . '"');
こちらも「system」関連の抜粋のみ。
「コピー元となるディレクトリ」と「コピー先となるディレクトリ」の部分は、前回同様、任意に書き換えてください。
実際に作業で使ったスクリプトは、ZIP圧縮はほとんど上記のソースのままでちょっと付け足した程度ですが、ディレクトリのコピーは利用Wikiクローン内部で使っている複数のディレクトリを移動ということで、そのWikiクローンで用意されている関数を使ってディレクトリの列挙やコピー後の削除までしているため実際はもう少し複雑なソースです。
あまり面倒な手続きなく簡単な処理で済ませられたので、正直ありがたいです。
特にZIP圧縮は、普段使っているFTPクライアントでWikiクローンのログファイルをすべてダウンロードできなかっただけにバックアップが取れて本当によかった。
ZIP等の圧縮ファイルの扱いは、手軽にバックアップに利用できるため便利ではないと思います。




