※ イメージ図(©photoAC)
当サイトで、多量のファイルをサーバにアップ(パブリッシュ)すると、一部のhtmlファイルの内容が消失するという現象が起きています。
実は、前に使用していたさくらのレンタルサーバーで、2022年7月にそれまでの HDD の旧サーバから SSD の新サーバ新サーバに移行したところ、この現象が何度か発生しました。そのため、エックスサーバーに移転したのですが、エックスサーバーでも同じ不具合が起きるようです。
さくらのレンタルサーバーの旧サーバーでは、2016年6月から2022年7月まで一度も起きていなかった現象です。SSD などサーバーの速度が改善されると起きる現象かもしれません。
近年は WordPress や、Movable Type などの CMS が全盛となり、当サイトのような静的サイトで多数のファイルを同時にサーバにアップするということがされなくなっているために顕在化していないのかもしれません。
しかし WEB サイトの作成者にとっては、重大な問題ですので事実関係と解決法をレポートします。
- 1.htmlファイルの内容の消失事故
- (1)さくらのレンタルサーバーの新サーバへの移転
- (2)新サーバ移行後の不具合
- 2.エックスサーバーでの同種の不具合
- 3.解決策を模索して
- (1)容量がゼロのファイルを見つけることは難しい
- (2)全てのファイルを圧縮してアップロードして解凍する方法
- (3)閲覧者に頼るという方法
- 4.最後に
1.htmlファイルの内容の消失事故
執筆日時:
最終改訂:
(1)さくらのレンタルサーバーの新サーバへの移転
※ イメージ図(©photoAC)
当サイトは 2016 年6月にさくらのレンタルサーバーで公開を始めた。さくらのレンタルサーバーは、その当時は、サーバーに HDD を用いていた。
しかし、2022年には、高速な SSD の新サーバーをリリースした。そこで、当サイトも既存ユーザーの移転が可能となった 2022 年7月に新サーバーに移行したのである。
ところが、移行した直後に、コンテンツの後半がなくなっているページが発見された(※)のである。移行のためかどうかは不明だが、ローカルにバックアップデータがあるので、念のため、すべてのファイルを再アップした。
※ 別稿「さくらのレンタルサーバSSD化の効果」でも事実関係のみをお知らせしたが、新サーバの不具合という証拠はない。しかし、サーバー移転の直後に発見されており、その可能性は高いと考えるのが自然である。
(2)新サーバ移行後の不具合
※ イメージ図(©photoAC)
最初の事故は、読者の方からの情報で知ることとなった。複数の読者の方から、メールと掲示板で、表示できないページがあるとのお知らせ頂いたのである。
確認したところ、該当するhtmlファイルの容量がゼロになっていた。すぐにローカル HDD にあるファイルを再びアップしたところ解決した。
次は、私が過去の記事を確認していて、表示できないページを発見したのである。同様な方法で解説はしたが、不具合が繰り返された以上、再発防止を考えざるを得ない。
当サイトが公開してから新サーバに移行するまでの6年間、このような事故は経験していない。従って、新サーバに問題があると考えるしかないのである。
そのため、当サイトはこのような不具合を避けるため、信頼性に定評があり、全国シェア1位のエックスサーバーに移転したのである。
2.エックスサーバーでの同種の不具合
ところが、2023年1月にエックスサーバーに移行した後、2度にわたって空白のページが見つかったのである。あるページを閲覧しようとすると、真っ白な画面が表示されるのだ。
やはり該当するhtmlファイルの容量がゼロになっている。ローカルにあるファイルをアップして上書きすればすぐに解決はするのだが、それまで白いページが表示されていたわけであるから、やはり重大な問題である。
ここにきて分かったことは、HDD のサーバでは発生しないが SDD のサーバーでは起きるらしいということである。さくらのレンタルサーバー固有の問題ではなかったのである。
3.解決策を模索して
(1)容量がゼロのファイルを見つけることは難しい
ア 容量がゼロのファイルをチェックするツールはない
※ イメージ図(©photoAC)
このような不具合は、多量のファイルをアップしたときに発生することは、これまでの経験からほぼ明らかである。また、ファイルのアップのためのパブリッシュソフトはFailZillaを用いているが、不具合が発生してもエラー表示が出ないことも分かっている。
そして、ローカルの HDD にある正常なファイルをアップして問題のあるファイルに上書きすれば解決するのである。
であれば、多量のファイルをアップした後で、容量がゼロのファイルを見つけることができれば、問題は解決するわけである。しかし、容量がゼロのファイルを検索して見つけてくれるツールというものは見つからなかった。
イ ファイルアップ時に失敗したファイルを見つけることも困難
要は、ファイルをアップしたときにアップに失敗したことが分かればそれでよい。FileZilla にはアップに失敗したファイルの数と、どのファイルのアップに失敗したかを表示する機能がある。しかし、この機能では、本件でのアップの失敗は表示されないのである。
それなら、かつてよく用いられたパブリッシュソフトである FFFTP はどうだろうかと思ったが、こちらにはそもそもファイル転送に失敗したことを表示する機能がないようである。また、エックスサーバーのファイルマネージャーは、大量のファイルの転送には向いていないし、アップに失敗したことを表示する機能もなさそうである。
(2)全てのファイルを圧縮してアップロードして解凍する方法
そうなると、アップする方法の改善が必要となる。以前、さくらのレンタルサーバーを使っていたときに、メールサポートで、多数のファイルを zip ファイルに圧縮してアップするという方法があると教えて頂いた。調べてみると、確かにいくつかのサイトに方法が掲示されている。
例えば、unlimitedch@osというサイトに示されている方法は次のようなものである。なお、サーバーが PHP に対応していることが条件だが、無料のサーバーでもない限り対応していないことは考えられない。
【圧縮してアップロードして解凍する方法】
- アップするファイルを、圧縮ソフトで zip 形式に圧縮して、例えば httpfaile.zip などという名前を付ける。
- 次に示す、解凍用の PHP ファイルに適当な名称を付けて、圧縮したファイルとともにサーバーのアップしたい場所にアップする。
- PHP ファイルを実行する。
- php ファイルと httpfaile.zip を削除する。
解凍用の php ファイルは次のようなもので、適当なエディタでテキストファイルにコピーして、拡張子を php とすればよい。
<?php
$zip = new ZipArchive();
if ($zip->open('./httpfaile.zip') === true) {
if ($zip->extractTo('./') === true) {
$zip->close();
} else {
exit('Extract Error');
}
} else {
exit('Open Error');
}
echo 'Unzip Complete';
?>
実際にこのサイトで実施してみたが(※)とくに問題なく成功した。正直、最初に実施したときは、かなり緊張したが、自分でも拍子抜けするほど簡単にできた。
※ 本番環境で実施する前に、その時点でまだレンタルしているさくらのレンタルサーバーで、サブディレクトリを作成して、複数回、圧縮したソフトをアップして解凍してみた。とくに問題なく成功したので本番環境で試してみたのである。
ただ、実際に実行される場合は、事前に、試験用にサブドメインを作成するか無償のレンタルサーバーをレンタルして動作を確認してから本番をすることをお勧めする。
なお、GitHub に解凍用の php ファイルがアップされているので、それを使ってもよいかもしれない。こちらは解凍後の表示が日本語になっている。
(3)閲覧者に頼るという方法
※ イメージ図(©photoAC)
筆者は、現時点での対策(※)のひとつとして、トップページに「重要なお知らせ」として、空白のページを見つけたら報せて欲しいと告知する方法もとっている。
※ もちろん、圧縮してアップする方法も早急に試してみるつもりである。
しかし、意外にトップページを閲覧される方の割合は多くないので、効果がどれほどあるかは未知数である。しかし、これまでもサイトにミスがあった場合など、メール等でご教示を頂くことは多かった。
不具合のあるページの調査には、閲覧者の方の善意の協力に頼るというのもひとつの方法かと思う。
4.最後に
当サイトとして、さくらのレンタルサーバーの新サーバ及びエックスサーバーの双方で経験した不具合なので、ネットに解決方法がアップされているかと思ったのだが、同種の不具合についての記述はなかった。
おそらく、個人のサイトでは WordPress が全盛となっており、企業のサイトはあまりページ数が多くはないので、当サイトのような多数のファイルを同時にアップするようなケースがほとんどないからだろう。
しかし、私が経験している以上、他にも同種の不具合の例はあるのではないかと思う。そのような場合にお役にたてるかと思い、解決策をアップすることとした。
参考になれば幸いである。
【関連コンテンツ】
SSD で構築されたサーバの不具合
さくらのレンタルサーバーで、SSDの新サーバーへの移行後に、htmlファイルが消失するという現象が起きました。事実関係のみをレポートします。
さくらのレンタルサーバSSD化の効果
さくらのレンタルサーバーは、2022年2月16日にSSDの新サーバーをリリースしました。実際にどの程度早くなったのかについて、体感と実測値でレポートします。
【手順と効果】さくらからXサーバへの移転
当サイトは、さくらのレンタルサーバーからエックスサーバーへ移転しました。具体的な移行の方法を解説しています。