事例紹介(復旧・実戦系)

大量ファイルFTP転送、タイムアウトでイラッとしてませんか?

PHPでzip圧縮
WEBさん
WEBさん

大量ファイルの FTP 転送は、回線ではなく「1 ファイルごとのオーバーヘッド」でタイムアウトします。サーバー側で固めてから 1 本にする方が桁違いに速いです。

※ 本記事は2022年当時の事例です。 現在の WordPress 6.x / PHP 8.x 環境では推奨手順が変わっている可能性があります。最新の対応方針は 復旧サービス または ご相談窓口 から確認ください。
レンタルサーバーからデータをバックアップしたいとき、逆にアップロードしたいとき。

大規模なサイトや WordPress では、ファイル数がとんでもない量になりがちです。

これから紹介する方法を使えば、普段のレンタルサーバーで手間を省け、ストレスフリーになれます。

ぜひ最後までご覧ください。

利用可能なレンタルサーバー

基本的にはどのレンタルサーバーでも OK。ただし PHP が利用可能なことが必須条件です。

HTML サーバーでは本方法を使用できないため、ご了承ください。

アップロード・ダウンロードの手間を省く

FTP ソフトで大量ファイルをアップロード・ダウンロードしたい場合は、いったん zip ファイルに圧縮してから転送するのがおすすめです。

PHP ファイルを作成

圧縮するコード

まずはテキストファイルに、以下の内容をそのままコピペします。
<?php
 system('tar -zcf 圧縮後のファイル名.zip 圧縮対象ファイル名/ディレクトリ名');
 system('tar -tf 圧縮後のファイル名.zip');
PHP

解説

1 行目は、PHP プログラムの開始宣言です。

2 行目では system の引数に tar コマンドを指定し、サーバーに圧縮処理を実行させます。「圧縮対象ファイル名/ディレクトリ名」を 1 つのアーカイブに圧縮するコマンドを記述しています。

tar コマンドのオプション

z:gzip の圧縮処理を行う
c:新規にアーカイブを作成する
f:アーカイブファイルを指定する

3 行目では、zip ファイルの中身を出力しています (中身を確認しない場合は削除しても OK)。

tar コマンドのオプション

t:アーカイブファイルの一覧を表示する
f:アーカイブファイルを指定する

使い方

たとえば、ドキュメントルートに zip.php をアップロードし、完了後にブラウザから zip.php を実行します。

ブラウザで zip.php へのパスを正しく指定できれば、ドキュメントルート以外の場所にアップロードしても問題ありません。
アドレスバーにzip.phpへパスを指定
アドレスバーにzip.phpへパスを指定

解凍するコード

まずはテキストファイルに、以下の内容をそのままコピペします。
<?php
    $zip = new ZipArchive;

    //解凍ファイル名を指定
  if ($zip->open('解凍したいファイル名.zip') === TRUE) {

        //解凍先を指定
        $zip->extractTo('./');
        $zip->close();

        echo '成功';

    } else {

        echo '失敗';
    
    }
PHP

解説

1 行目は、PHP プログラムの開始宣言です。

2 行目の $zip = new ZipArchive; では、new 演算子で ZipArchive クラスを利用する準備をし、変数 $zip に格納しています。

5 行目の if ($zip->open(‘解凍したいファイル名.zip’) === TRUE) では、対象 zip ファイルを開ける場合に 8 行目以降の処理を実行する、という条件を指定しています。

8 行目の $zip->extractTo(‘./’); では、extractTo() の引数で解凍先を指定し、zip を解凍します。ここでは、対象 zip と同じ階層を指定しています。

9 行目の $zip->close(); で zip ファイルを閉じ、解凍処理を終了します。

解凍に成功すれば 11 行目の「成功」、失敗すれば 15 行目の「失敗」が表示されます。
ZipArchive クラスの extractTo 関数とは
ZipArchive クラスの extractTo 関数は、PHP 5.2.0 以降の PHP 5 系・PHP 7 系で利用可能です (ZipArchive クラスの extractTo 関数について)。

また、利用には PHP の拡張モジュールである PECL 1.1.0 以降が必要です。

使い方

展開する zip ファイルと同じ場所に unzip.php をアップロードし、完了後にブラウザから unzip.php を実行します。
アドレスバーにunzip.phpへパスを指定
アドレスバーにunzip.phpへパスを指定

まとめ

FTP の通常アップロードと比べて、この方法はかなり快適です。ぜひお試しください。
ご理解ください

PHP が利用可能なサーバーでしか使えない点が難点です。

WordPress が使えるレンタルサーバーなら、標準で PHP が利用可能なはずです。万一動かない場合はゴメンナサイ (^◇^;)

あわせて読みたい

PHP が利用可能なサーバーでしか使えない点が難点です。

ファイル・ディレクトリのパスを正しく指定することがポイント。
パス指定について詳しく知りたい場合は、こちらをご覧ください。

絶対パスと相対パス

WEBさん
WEBさん

FTP が固まったままサーバー上の状態が不明…という段階でしたら、サーバー側のシェル操作からご一緒に整理できます。

コメントを残す

メールアドレスは公開されません。* は必須項目です。

CAPTCHA