ここ2週間程、レンタルサーバーのWADAX から、エックスサーバーへサーバーを乗り換える作業をしていました。サーバー上にある容量が約9GB程もある上、色々想定外なことがあり大変でした。一言言えるのは、

WADAXを使うのは、マジ止めた方がいい!

ということです。この記事は、WADAXにフィーチャーしたものでは無いので詳しくは書きませんが、要約すると以下の通りです。

  • サーバー上のファイルをユーザーがバックアップ保存する機能が無い
  • unixコマンドが使えないから、無数にあるファイルを圧縮することも不可能
  • よって、バックアップするには、FTP接続してファイルを落としてくるしか無い。しかし9GBものファイルがサーバー上にある場合は、6時間もかかる。そして、頻繁にFTP接続が切れるので、どこまでファイルを落としたかを確認出来る体制が無いと、延々に完璧なバックアップが取れない
  • MySQLのバージョンが4までしか提供されていないので、最新のWordPressを使うことが不可能(現在のWordPressには、5.0以上のバージョンのMySQLが必要)

と言うわけで、WADAXにある約9GBのファイルをバックアップするのに、切れるFTP接続を何十回もつなぎ直して6時間以上かけて地道に行いました。

ここまでは余談です。本題はこれからです。

サーバー移転をする場合、通常、移転先のサーバー(今回はエックスサーバー)へ9GBもある無数のファイルをFTP接続してアップロードすることは無謀です。上記した通り、アップロードする際もFTP接続は頻繁に切れる為です。ではどうするか?と言えば、9GB のファイルを一括で圧縮して一つのファイルへまとめます。そうすると、容量が減りますし、FTP接続でアップロードする際も切れることがほぼ無くなります。

同じ9GBのアップロードでも、圧縮しない無数のファイル(今回は85,000ファイル)の場合は数時間かかる一方、圧縮すると数十分で完了します。

まず、zipファイルに圧縮してアップロードしました。で、以下の記事に沿って、unzip.php を実行しました。

【PHP】サーバー上で特定のフォルダーのファイルをzip圧縮したり解凍する方法

ところが、解凍されない!!

調べてみたところ、「サーバー上でzipファイルが解凍出来るのは、2GB以下のファイルのみ」 とのこと。これは困りました。色々調べてみたところ、.tar.gz ファイルであれば容量制限は無いとのこと。そこで、ファイル群を .tar.gz へ圧縮しなおしました。圧縮の際に使ったソフトは、 7-Zipです。一旦、ファイル群をtar ファイルへまとめてから、もう一度、 gzip で圧縮すると、 .tar.gz ファイルが出来ます。

.tar.gzとは?

.tar は、ファイル群を一つにまとめるアーカイブ形式の一つです。ひとつにまとめるだけで圧縮されません。 .gz は、一つのファイルのみを圧縮出来る形式です。二つ以上をまとめて圧縮出来ません。そこで、ファイル群を tar で一つにまとめ、それを gz 形式で圧縮する形式を .tar.gz として表します。

解凍

それを、フォルダーへアップロード(ファイル名は a.tar.gz )して、同じフォルダーにアップロードした以下のコードのファイル( untar_gz.php )を実行しました。

※文字コードはutf8 で、ファイル名は、 untar_gz.php として保存

すると、無事に解凍出来ました。

圧縮

因みに tar.gz へ圧縮するコードは以下の通りです。

http://hoge.jp/koko/

のフォルダー以下のファイルを圧縮する場合、

http://hoge.jp/koko/comp/

フォルダを作成して、その中に、圧縮プログラム( tar_gz.php )をアップします。圧縮ファイルは、a.tar.gz というファイル名で

http://hoge.jp/koko/comp/

に保存されます。

※文字コードは utf8 にして、ファイル名は、 tar_gz.php で保存して下さい

要するに、サーバー上の圧縮・解凍には、制限が無い .tar.gz がお勧めということです。