エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


FTPでダウンロード時にファイルが重複するため上書きしますか?と表示される問題

      2017/03/11

FTPダウンロード時にファイルが重複する

 

「ファイルをダウンロードすると『重複するので上書きしますか?』といわれる問題」って何?

 
例えば、WordPressで運用しているサイトをバックアップしようと、FTPツールで、ファイルをダウンロードしようとしたときに、
「指定されたディレクトリにはすでに「******」が存在します。
 上書きするか、このファイルの転送をスキップするか選択してください。」
といったメッセージが出ることがあります。
 
下記画像は、WinSCPという FTPクライアントツールを利用してファイルをダウンロード使用したときに表示される画面です。
20160815_web_01
 
これの原因とこれによって発生する問題点について改めて確認をしてみました。
 
 

「ファイルをダウンロードすると『重複するので上書きしますか?』といわれる問題」の原因

 
「ファイルをダウンロードすると『重複するので上書きしますか?』といわれる問題」が発生する原因は、Linuxと Windows、MacOSとのファイルの管理システムが違うためです。
 
具体的には、Linuxは、大文字小文字を別の文字として認識しますが、Windows、MacOSでは大文字小文字を区別せず同じ文字として認識するためです。
(Windows、MacOSは、大文字小文字を利用してファイル名を付けると、表示上は大文字小文字の区別をつけることができますが、大文字小文字が違うだけでは同じファイルとして認識します。)
 
 
具体的には、abc.gif、Abc.gif、ABC.gif というファイルがあったとします。
Linuxでは、別のファイルとして認識しますので、同じフォルダの中に置くことができます。
ですが、
Windows、MacOSでは、同じファイルとして認識しますので、同じフォルダの中に置くことができません。
そのため、ダウンロードしようとすると、上書きしますか?と聞かれることになるわけです。
 
 

Linuxとは?

 
一般的にパソコンといえば、OSは、Windowsか、MacOSかのいずれかになります。
 
これに対して、Webサイトなどを構築するサーバシステムの OSには、UNIX系の Linuxといわれる OSが使われています。
 
Linuxは、フリーのオープンソースであることや、カスタマイズが可能なことなどいろいろなメリットがあるため、さまざまな用途のシステムに利用されていますが、その代表的な用途の一つが Webサイトを構築する Webサーバの OSとしての利用になります。
 
一般的なレンタルサーバの OSには Linuxが使われていると考えておいて間違いないでしょう。
 
 


 

「ファイルをダウンロードすると『重複するので上書きしますか?』といわれる問題」の影響

 
先に説明しましたが、abc.gif、Abc.gif、ABC.gif のように、大文字小文字が混ざったファイルをダウンロードしようとすると、「重複するので上書きしますか?」と訊かれてしまいます。
 
これを上書きしてしまうと、具体的にどのような影響があるかを確認しましょう。
 
かなり省略していますが、下記のように、「abc.gif、Abc.gif、ABC.gif」の画像ファイルを imgタグで編集をします。
 

 
画像ファイルは、Windowsと MacOSの場合は、大文字小文字の区別がありませんので、「abc.gif」のみを置きます。
 
そして、これをブラウザで表示させると、何も問題なくすべての画像が表示されます。
HTML上では 大文字小文字を区別して記述しているものの、それの対応を行う OS側が大文字小文字を区別しないため、問題なく表示される、ということです。
(XAMPP経由であっても直接ファイルをブラウザで表示しても同様です。)
 
20160815_web_02
 
 
対して、Linuxの環境では、abc.gif、Abc.gifのファイルを置いて、ABC.gifはない状態にしてみました。
そして、ブラウザで表示させると、下記のようにファイルがない「ABC.gif」は表示されませんでした。
 
20160815_web_03
 
これがまさに、Linuxが、大文字小文字を区別するために発生する現象です。
 
 
つまりは、大文字小文字を区別してサイトを構築した場合は、Webサーバから FTPでファイルをダウンロードをする際に、「重複するので上書きしますか?」と訊かれ、上書きしてダウンロードすると、大文字小文字が統一された 1ファイルになってしまいます。
 
そして、その状態から改めて FTPで Webサーバにファイルをアップロードすると、大文字小文字が区別されたファイルがなくなっているため、ファイルのリンクが切れた状態になってしまいます。
 
 
Windowsや MacOSのパソコンで静的な HTMLファイルを生成する作り方の場合は、そもそも大文字小文字を区別して作成することができませんので、この問題は起こりません。
 
ですが、WordPressのようにファイルをアップロードする機能を有した CMSを利用する場合、アップロードされたファイルが格納される場所は一つの同じフォルダになる場合が多々ありますので、大文字小文字を気にせずに付けていると、一つのフォルダの中に大文字小文字が違うだけの同じファイル名のファイルが存在することになってしまいます。
 
 

「ファイルをダウンロードすると『重複するので上書きしますか?』といわれる問題」の対応方法

 
「重複するので上書きしますか?」と訊かれる問題に対しての解決方法は以下のようなものがあります。
 

  • 大文字小文字を統一する(基本的にファイル名は小文字で付ける)
  • パソコンの環境を Linuxにする
  • サーバ上で zip圧縮し、パソコン上では展開(解凍)しない

 
「解決方法は以下のようなものがあります」と書いたものの、実質的には 1つ目の「大文字小文字を統一する(基本的にファイル名は小文字で付ける)」しかないんですよね。
 
Windowsでも MacOSでも大文字小文字を区別してファイル名を付けることは可能ですが、ファイル名のアルファベットを付ける場合は「すべて小文字!」と決めてしまうことですね。
 
会社などであっても社内全体で「すべて小文字!」と決めてしまうしかないですね。
 
 
そして、今回問題になったように大文字小文字が混在することでファイルが重複した場合は、一つ一つアナログ的に修正していくしか方法がないですね。
(何か便利なツールをご存知の方は教えてください!!!)
 
もし、対象のサーバが sshが使えて、コマンドラインでの操作ができる方ならば、3項目のサーバ上で zip圧縮し、それをそのまま新しいサーバに移動させて展開するという方法が取れます。
詳しいやり方は、割愛します。
sshが使えるくらいの方ならば詳しい説明は必要なく、詳しい説明が必要な方はここではとても書ききれませんので...
 
 

ファイル名が文字化けを起こしてダウンロードできない

 
ファイルが重複する問題については前項までで終了ですが、ファイルをダウンロードするときに発生する問題として、ファイル名が文字化けをしていることが原因でダウンロードできない、という問題が発生する場合もあります。
 
これは、ファイル名に日本語を使っている(半角英数字以外の文字を使っている)場合に発生します。
日本語(全角文字、2バイト文字)は、日本語を表示するために Shift-Jis、UTF-8などの文字コードを指定する必要があるのですが、この文字コードが違う場合に文字化けを起こします。
 
Webサイトを構築する場合に日本語のファイル名を使うことはほぼありませんが、WordPressなどで記事を投稿する際に利用する画像の場合は、ついつい日本語のファイル名まま使用してしまう場合が少なくありません。
 
WordPressなどの CMSをそのまま利用する場合は問題になりませんが、この記事で紹介しているファイルをダウンロードしてくる場合に問題が発生します。
 
そのため、アップロードする画像のファイル名は半角英数字を使って付ける方がトラブルは少なくなります。

 - プログラミング・Web関連技術

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

サイト更新、引越時に.htaccessでリダイレクトする方法解説

サイト更新,引越しなどでサイトのURLが変わった場合のリダイレクトを.htaccessのRewriteEngineを使って処理する方法の解説です。

直リンク禁止の.htaccessを超分かりやすく解説。日本語じゃなくてPHPで説明

直リンクを禁止する.htaccessの記述内容を日本語ではなくPHPで解説!私自身もこの方法ですっかり理解できました。.htaccessって簡単!って思えますよ。

Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説

開発進行中の環境、公開中の環境にGitを導入する。その基本的な手続きを解説。Gitの導入、ローカルリポジトリを作成。リモートリポジトリを利用し、本番環境にデプロイする手続きを解説。

借りてはいけないレンタルサーバ実例4社・アルファメール・WEBアリーナ

餅は餅屋。サーバはサーバ屋が提供するサービスを利用するべきという記事で、具体例 4サービスを例にこんなサーバはNGと紹介しています。

ロリポップからX-Serverに引越し。サーバの月額費用が増えても求めた理由は?

ロリポップからX-Serverに引越すその理由とは?SEOの観点からも少しでもサーバレスポンスが早いサーバが求められロリポップでは限界を感じたからです。

直リンクとは何か?直リンクとディープリンクの違いと著作権問題

直リンクは著作権違反なのか?議論の前にまず「直リンク」の意味を正しく理解しよう。直リンクは他のサイトの画像を読み込む、ディープリンクなど多様な意味がある。

本当に?GMO系ロリポップ・ヘテムルを無料で運用する方法があった!

ロリポップ、ヘテムルを株主優待を利用して実質無料で運営しよう!という解説記事です。株主優待で提供されるサービスの内容を解説し、無料になる仕組みを解説します。

mod_pagespeedでWebサイトを超簡単高速化・Google謹製の最終兵器

Webサイトの表示スピード高速化の最終兵器、Google謹製mod_pagespeedの解説です。レンタルサーバではX-Serverでしか利用できませんが、ワンクリックで高速化します。

コピーコンテンツ対策.htaccessで直リンク禁止しリダイレクトで対応

不正なコピーコンテンツからの直リンクを拒否する.htaccessの設定方法。拒否するサイトを指定、許可するサイトを指定する方法、単純な拒否と画像の差し替えを解説。

Webサイト公開時に重複コンテンツを排除する.htaccessのリダイレクトの設定のまとめ

サイトを公開する際にはURLの正規化は必須です。正規化とは何かを解説し、.htaccessに設定すべきリダイレクトの設定を具体的に説明します。