エス技研

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.

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

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

  関連記事

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

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

CentOS環境に ntpdをインストールして自動的に時刻を取得する設定にする
CentOS環境に ntpdをインストールして自動的に時刻を取得して合わせる設定にする

VirtualBoxに構築した CentOSの環境の時計がずれているとき、ntpdをインストールし、時計を合わせる方法を解説。NTPサーバを指定する方法や ntpdを自動起動する設定も解説。

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

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

Selenium WebDriver、Pythonをインストールしブラウザ自動操作の環境構築手順のまとめ

ブラウザを自動操作しテストを実行するロボットをselenium WebDriver+Pythonの環境を構築し、動作確認までの手順のまとめ。初心者向けに詳細解説。サンプルソースも。

PythonでUTF-8など日本語(全角文字)を使う方法。コメントにも必要。

Pythonの標準では日本語(全角文字)を利用できないので、利用する際は文字コードを宣言する必要がある。「# coding: utf-8」の様に記述すればOK。

Beautiful Soupを利用してPythonでスクレイピングを行う環境構築方法の解説

BeautifulSoupはPythonでスクレイピングを行う際に便利なツール。インストール方法も簡単。ただ、事前にpipのインストールが必要でその解説もしてます。

ブラウザのキャッシュを活用するの対策!広告バナーを消して表示を高速化

あなたのサイトが遅いのはバリューコマースのバナーではないですか?バリューコマースのバナーを外すだけでmod_deflateとmod_expiresを設定するより効果があります!

So-netのレンタルサーバHSはヤバイ・借りてはいけないレンタルサーバリスト

餅は餅屋。サーバはサーバ屋が提供するサービスを利用するべきという記事で、単独でSo-netを紹介。OEMでサービスの提供を受けているだけなので何とも残念すぎる内容。

.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点
.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点

Gitで管理する対象、対象外のファイル、フォルダの指定は .gitignoreに記述する。その基本的な記述の方法に加え、無視対象にしたフォルダの中の特定のファイルを管理対象にする記述方法を解説。

mod_pagespeedカスタマイズで高速化を詳細解説・Google謹製

mod_pagespeedをデフォルトのまま使っていませんか?mod_pagespeedはデフォルトのままでも速い!でも仕組みを理解し設定し直せばより速くなる!