SSH接続なしでZIP解凍するphpプログラム!ファイル数多い時便利!
SSH接続なしでZIP解凍するphpプログラムのご紹介です。大量に圧縮されていないバックアップファイルをFFFTPやFileZilla等のFTPソフトでアップロードするには時間がかかります。ワードプレスのバックアップでしたら、数十分以上もの莫大な時間がかかることもありますよね。
時間がかかる理由は、FTPは1ファイルごとにファイル送受信情報をやり取りしているからです。
ワードプレスのバックアップファイルのように、数が多ければ多いほど時間がかかってしまいます。
途中でFTP接続が切れてしまうことも良くあります。そんな時に便利なのが、このZIP解凍phpプログラムになります。
私の場合、以前は「teraterm(テラターム)といったSSH接続ソフト」を利用して、ZIP解凍コマンドを入力して解凍していました。ただ、このSSH接続の作業は結構手間がかかりますよね(Xサーバーですと、セキュリティ対策なので仕方ないですが、公開鍵認証をする必要がありますし、設定もとても面倒ですよね。)。
ところが、このphpプログラムを利用するようになってからは、とても楽になりました。
ワードプレスを丸ごとサーバーにアップロードしたり、サーバー移転をする際などに使っていただけたらと思います。
phpコードは、一番下にてご紹介しています。
ZIP解凍phpプログラムの使い方概要
1、大量にあるファイルを、フォルダ・ディレクトリにまとめておきます。
ワードプレスのデータファイルが格納されている「wp-content」フォルダ・ディレクトリをバックアップすることはよくあると思います。
2、解凍したいフォルダ・ディレクトリごと、ZIP形式で圧縮します。
解凍したいフォルダ・ディレクトリごと、+Lhacaなどの圧縮ソフトにてZIP形式で圧縮します。
時間がかかりますが、FTPソフトで大量のファイルをアップロードするより、ずっと短時間でZIP圧縮できるはずです。
出来上がったファイル名は、「 wp-content.zip 」のようになります。拡張子は「 .zip 」としてください。
3、後の項目でご紹介していますphpプログラムを、パソコンなどのコンピューター側に保存します。
新しく、新規テキストファイルを作成して、phpプログラムをコピペして、ファイル名を「 unzip.php 」といったファイル名に変更します。
4、圧縮したZIPファイルと「 unzip.php 」のようなphpプログラムを、FTPソフトを使い、レンタルサーバーなどにアップロードします。
ファイルサイズが大きいので時間はかかると思いますが、ファイル数は1つですので大幅にアップロード時間が短縮されます。
5、アップロードしたphpファイルのフルパス・フルアドレスにて、アクセスし、入力フォームに「 解凍したいZIPファイル名 」を入力し、「UNZIP」ボタンを押します。
error–unzip failed:エラーです。何かしらの理由でZIPファイルの解凍が失敗しています。
error–this file is not zip file:エラーです。「.zip」を含まないZIPファイルが指定されています。
ZIP解凍phpプログラムコードの紹介
<?php //実行しているスクリプトのフルパスを取得 $scriptfullpath=(empty($_SERVER["HTTPS"]) ? "http://" : "https://").$_SERVER["HTTP_HOST"].$_SERVER['PHP_SELF']; $filename=""; $filename= $_POST["filename"]; echo <<< EOM <form method="post" action="$scriptfullpath"> <input type="hidden" name="mode" value="unzip"> -----Un Zip program-----<BR> Input zip filename:<input type="text" name="filename" value="$filename"> <input type="submit" value="UNZIP"> </form> EOM; if(strpos($filename,'.zip') !== false){ //$filenameの中に.zipが含まれている場合 $zip = new ZipArchive; $res = $zip->open($filename); if ($res === TRUE) { $zip->extractTo('./'); $zip->close(); echo 'OK--unzip success'; } else { echo 'error--unzip failed'; } }else{ //zipファイルではない if($_POST["mode"] == "unzip"){echo 'error--this file is not zip file';} } ?>
このZIP解凍phpプログラムコードがお役に立ちましたら幸いです。
コメント
いつも使わせてもらってます。
ありがとうございます♪
こちらこそ、使っていただきありがとうございます♪