大量ファイルFTP転送、タイムアウトでイラッとしてませんか?
大量ファイルの 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 つのアーカイブに圧縮するコマンドを記述しています。
3 行目では、zip ファイルの中身を出力しています (中身を確認しない場合は削除しても OK)。
使い方
たとえば、ドキュメントルートに 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 を実行します。

まとめ
FTP の通常アップロードと比べて、この方法はかなり快適です。ぜひお試しください。
ご理解ください
PHP が利用可能なサーバーでしか使えない点が難点です。
WordPress が使えるレンタルサーバーなら、標準で PHP が利用可能なはずです。万一動かない場合はゴメンナサイ (^◇^;)
あわせて読みたい
FTP が固まったままサーバー上の状態が不明…という段階でしたら、サーバー側のシェル操作からご一緒に整理できます。






