WEBサーバー上の大量ファイルが存在するディレクトリをローカルにバックアップする必要があり、ダウンロードに時間が掛かったり、稀に数ファイルだけダウンロードに失敗することがあります。
そんな時はPHPを使ってWEBサーバー上で大量ファイルが存在するディレクトリをzipファイルに圧縮して、そのzipファイルをローカルにダウンロードすると短時間で確実にローカルにダウンロードできるのでその方法をご紹介します。
Contents
ディスプレイ広告
同じファイル名前のzipファイル名が圧縮するWEBサーバー上のディレクトリに無いか確認
まず、事前に圧縮予定の同じ名前のzipファイル名とPHPスクリプトファイル名が、圧縮するWEBサーバーのディレクトリ上に無いことを確認して下さい。
圧縮用PHPスクリプトファイル(zip.php)をWEBサーバーにアップロード
圧縮用PHPスクリプトファイル(zip.php)を圧縮するディレクトリがあるWEBサーバーにアップロードします。
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"); } ?>
※「$zipdr」は圧縮するディレクトリ名が入りますので、WEBサーバー上に存在するディレクトリ名に変更して下さい。
※「$zipfilename」は圧縮後のファイル名が入りますので、任意のファイル名に変更して下さい。
圧縮用PHPスクリプトファイル(zip.php)GitHubからダウンロード
※リンク先の「Code」をクリックし「Download ZIP」より一式ダウンロードできます。
WEBサーバーの圧縮用PHPスクリプトファイル(zip.php)にアクセス
ブラウザで
https://WEBサーバーURL/zip.php
にアクセスすると指定したディレクトリがWEBサーバー上に指定したzipファイル名で圧縮されます。
圧縮後のzipファイルをダウンロード
圧縮されたzipファイルをローカルPCにダウンロードします。
FTPでダウンロードもしくは、ブラウザで指定したzipファイル名で
https://WEBサーバーURL/testdr.zip
にアクセスするとダウンロードできます。
※流用される場合は自己責任でお願いします。