ファイル転送ソフト(WinSCP、CyberDuck、FFFTPなど)を使い、大量のファイルをレンタルサーバにアップロードすると、
ネットはそんなに遅くないのに、転送完了までに異様に時間がかかりませんか?
これはファイルを1つアップロードする毎に、その都度サーバにコマンドを送信しているからです。
もっと早くアップロードを完了させたい。そんな時に使える方法を書いてみました。
たとえばこんなとき…。使用例
レンタルサーバにて、WordPressを好きなバージョンで手動インストールするとき。
私の場合は、WordPress最新メジャーバージョンの1つ前のバージョンを、Xサーバによくインストールします。
最新メジャーバージョンは不具合が出る場合もあるので、極力避けるようにしています。
自分のパソコンで解凍して、サーバにアップロードすると、結構時間がかかるんです。
※Xサーバの「WordPressかんたんイントール」は最新バージョンが入るため、私はその方法は使いません。
目次
・まず結論
・手順
- zip圧縮された状態のファイルを入手(作成)
- ZIPファイルをアップロード
- Linuxコマンドを叩けるPHPプログラムを作成
- 作成したプログラムからLinuxコマンドを実行
- ファイル転送ソフトで解凍されたファイルを確認する
・まとめ
まず結論
ファイルが大量にある時、1個の圧縮ファイルにして転送をすれば時間が短縮できます。
転送後は、Linuxコマンドでファイルを解凍してやれば、ほぼ一瞬で解凍できます。
(通信速度に問題がないことが前提)
しかし、teraTerm(windows)や、iTerm2、ターミナル(Mac)などを使い、サーバにSSH接続してコンソール画面を使うのは面倒くさい。
どうせなら、ブラウザでやってしまおう、そんなことを考えたのがこのお話しです。
手順
<1.zip圧縮された状態のファイルを入手(作成)>
ここでは、ZIP圧縮されたファイルとして、WordPressの公式サイトから、入手したものを使います。
https://ja.wordpress.org/download/releases/
私の場合は、zipファイルを入手します。
例えば、WordPressではなく1つのファイルに圧縮されていない他のファイル群を使う場合は、
ローカル環境(自分のパソコン)でZIP圧縮しておきましょう。
<2.アップロード>
上記1で圧縮したファイルをサーバにアップロードする。
最近のネット回線であれば、数10Mbps~数100Mbps程度のスピードが出るので、ファイルサイズが1GB以下であればすぐ転送が終わると思います。
圧縮するとファイルサイズも減らせますしね。
今の話題の様に、ファイルが数百~数千とか、沢山あると、通信速度が早くてもなかなか転送が終わりません。
<3.Linuxコマンドを叩けるPHPプログラムを作成>
プログラム例:sample.php <?php header('Content-Type: text/html; charset=UTF-8'); ?> <form action="" method="post"> コマンド:<input type="text" name="cmd" value="<?=$_REQUEST["cmd"]?>" size="50"><br /> <input type="submit" value="送信"> </form><br /> <?php if ( isset($_REQUEST['cmd']) && !empty($_REQUEST['cmd'])) { echo '------------------------------------<br />'; echo 'コマンド:'.$_REQUEST['cmd'].'<br />'; echo '------------------------------------<br />'; $cmd = $_REQUEST['cmd']; exec($cmd, $res);echo '<pre>'; print_r($res); echo '</pre>'; }
<4.作成したプログラムからLinuxコマンドを実行>
sample.php をサーバにアップしてブラウザでアクセスしてみる。
ファイルを参照するコマンドを打ってみる。「ls -la」
※確認用に、Xサーバではない別のサーバを使っています。
Xサーバではroot権限はありませんので、適宜読替えてください。
ファイル転送ソフトで見てもこんな感じ。
※確認用に、Xサーバではない別のサーバを使っています。
Xサーバでは/var/www/html/という階層や、root権限はありませんので、適宜読替えてください。
ではここでwordpressのZIPファイルを解凍するコマンド打ってみる「unzip ./wordpress-5.5.3-ja.zip」
<5.ファイル転送ソフトで解凍されたファイルを確認する>
再度、ファイル転送ソフトで見てみると、「wordpress」というディレクトリが出来上がっている。
ここではwordprtessの話になってしまいますが、zipファイルを解凍後、wordpressというディレクトリが生成されて、その中にすべてのファイルが解凍されるます。そのままではアクセスする際は、http://example.com/wordpress/ こんなURLになってしまいますので。ファイルクライアントソフトで、ドメイン直下(ひとつ上の階層にファイルを纏めて移動するとよいと思います。
以降はwordpressの話になってしまうので、必要な場合だけ読んでください。
wordpressディレクトリの中身はこんな感じ。
1つ上の階層に移動して・・・。
すると中身がすっきり無くなるので、自分の上の階層に移動。
あとは空になった「wordpressディレクトリ」を削除してもOK
まとめ
使われ方としては限定的かもしれません。
しかしこのプログラムを作っておけば、
ファイル転送ソフトにログインユーザとパスワードを最初に設定するだけで、後はこのプログラムをアップして使うだけです。
サーバにコマンドでログインするとか手間は一切要らなくなります。
実際は、ファイル転送ソフトでサーバに接続するときに、ソフトがログインコマンドを送信しているはずですが、その辺は意識しなくても大丈夫ですからね。
【重要!!】このプログラムは、サーバがコマンドを許可していればなんでもできてしまいます。
例えばファイル削除(rm)などです。そのため全て自己責任でお願いします。
大事なファイルがサーバに上がっている場合は、試す前に必ずバックアップを取りましょう。