PHP PR

PHPで簡単バックアップ:WEBサーバーの大量ファイルを効率的にzip圧縮・ダウンロードする完全ガイド

記事内に商品プロモーションを含む場合があります

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」より一式ダウンロードできます。

「yo1tec/zip」からダウンロード >>

圧縮とダウンロードの実行

圧縮

スクリプトファイルをアップロードしたら、ブラウザからそのスクリプトを実行します。
具体的には、

https://WEBサーバーURL/zip.php

 
にアクセスすることで、指定したディレクトリがzip形式で圧縮されます。

ダウンロード

圧縮が完了したら、生成されたzipファイルをローカルPCにダウンロードします。
これにはFTPクライアントを使用するか、またはブラウザから直接ファイルをダウンロードすることができます。

FTPでダウンロードもしくは、ブラウザで指定したzipファイル名で

https://WEBサーバーURL/testdr.zip

 
にアクセスするとダウンロードできます。

まとめ

この方法により、WEBサーバー上の大量のファイルを効率的に、かつ確実にバックアップすることが可能になります。サーバーのデータを安全に保つためにも、定期的なバックアップを心がけましょう。

 
※流用される場合は自己責任でお願いします。