WEBサーバー上にある多数のファイルを管理する際、特にバックアップを取ることは非常に重要です。しかし、その作業は時間がかかり、時にはファイルが正しくダウンロードされないこともあります。そこで、PHPを使用してWEBサーバー上のファイルをzip形式で圧縮し、その後ローカル環境にダウンロードする方法をご紹介します。この方法を用いれば、時間を節約しつつ、安全にデータをバックアップすることができます。
バックアップ前の準備
バックアップを始める前に、いくつかの準備が必要です。まず、WEBサーバー上の圧縮予定のディレクトリに、同じ名前のzipファイルやPHPスクリプトファイルがないかを確認してください。これは、ファイル名の衝突を避けるために必要です。
圧縮用PHPスクリプトの準備
次に、圧縮作業を自動で行うPHPスクリプト(zip.php)を用意します。
このスクリプトは、指定されたディレクトリをzip形式で圧縮し、そのファイルをサーバー上に保存します。以下がそのPHPスクリプトの基本的な構造です。
zip.phpの中身
<?php
/*
ディレクトリをWEBサーバー上に圧縮するPHPスクリプトです。
まず、事前に同じ名前のzipファイル名、PHPスクリプトファイル名が、圧縮するWEBサーバーのディレクトリ上に無いことを確認して下さい。
このPHPファイルをWEBサーバーの圧縮するディレクトリがある場所にアップロードし、ブラウザで
https://WEBサーバーURL/zip.php
にアクセスすると指定した圧縮するディレクトリが指定したzipファイル名で圧縮されます。
*/
$zipdr = "testdr"; //圧縮するディレクトリ名
$zipdrpass = getcwd().'/'.$zipdr; //このPHPスクリプト場所+ディレクトリ名
$zipfilename = 'testdr.zip'; //圧縮後のzipファイ名
$zipfilepass = getcwd().'/'.$zipfilename; //このPHPスクリプト場所+圧縮後のzipファイル名
if(!is_dir($zipdrpass)){
exit("圧縮するディレクトリ「".$zipdrpass."」がありません。");
}
function zip($zipdrpass, $zipfilepass){
chdir($zipdrpass);
return shell_exec("zip -r {$zipfilepass} .");
}
if($zip = zip($zipdrpass, $zipfilepass)){
echo '<html lang="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>ディレクトリが圧縮されました。</title></head><body>';
echo "ディレクトリが圧縮されました。<br />\n";
echo "圧縮ディレクトリ:$zipdrpass<br />\n";
echo '<div style="overflow:auto; height:300px; border: #ccc 1px solid; margin:20px;">';
echo "$zip</div>\n";
echo "$zipfilepass: は正常に圧縮されました。<br />\n";
echo '</body></html>';
}else{
echo("抽出に失敗しました: $zipdrpass\n");
}
?>
このスクリプトファイルを、圧縮したいディレクトリが存在するWEBサーバーにアップロードします。
※「$zipdr」は圧縮するディレクトリ名が入りますので、WEBサーバー上に存在するディレクトリ名に変更して下さい。
※「$zipfilename」は圧縮後のファイル名が入りますので、任意のファイル名に変更して下さい。
圧縮用PHPスクリプトファイル(zip.php)GitHubからダウンロード
※リンク先の「Code」をクリックし「Download ZIP」より一式ダウンロードできます。
圧縮とダウンロードの実行
圧縮
スクリプトファイルをアップロードしたら、ブラウザからそのスクリプトを実行します。
具体的には、
https://WEBサーバーURL/zip.php
にアクセスすることで、指定したディレクトリがzip形式で圧縮されます。
ダウンロード
圧縮が完了したら、生成されたzipファイルをローカルPCにダウンロードします。
これにはFTPクライアントを使用するか、またはブラウザから直接ファイルをダウンロードすることができます。
FTPでダウンロードもしくは、ブラウザで指定したzipファイル名で
https://WEBサーバーURL/testdr.zip
にアクセスするとダウンロードできます。
まとめ
この方法により、WEBサーバー上の大量のファイルを効率的に、かつ確実にバックアップすることが可能になります。サーバーのデータを安全に保つためにも、定期的なバックアップを心がけましょう。
※流用される場合は自己責任でお願いします。