wgetでのファイル取得方法|日本語ファイル名に対応する手順

このQ&Aのポイント
  • WindowsのFTPサーバから日本語ファイル名をダウンロードする方法について説明します。
  • CentOSでwgetコマンドを使用してファイルをダウンロードする際に、日本語ファイル名が文字化けしてしまい、ファイルがダウンロードされない場合があります。その原因と対処法について解説します。
  • wgetコマンドでFTPサーバからファイルをダウンロードする方法について説明します。日本語ファイル名に対応するためには、コマンドのオプションに注意が必要です。
回答を見る
  • ベストアンサー

wget でのファイル取得

FTPサーバから、ファイルを取ってこなければならなくなったのですが、サーバ上のファイル名に「日本語」がついています。 Windows の FFFTP では、普通に日本語のファイル名が表示されています。サーバはWindowsのようです。 [xxxxx@xxxxxx Aug]$ ftp ftp.foo.co.jp Connected to ftp.foo.co.jp. 220 Microsoft FTP Service <SNIP!> Name (ftp.foo.co.jp:username): username 331 Password required for username. Password: 230 User username logged in. Remote system type is Windows_NT. ftp> というような表示です。 で、ダウンロードするファイルが多い(10GBのオーダー)なので、wgetで一気に取得しようとしたのですが、うまく取得できません。 ダウンロードするホストのOSはCentOSで日本語が表示されている(LANG=ja_JP.UTF-8)状態です。 ここで wget --no-passive-ftp -nH -np -r ftp://username:password@ftp.foo.co.jp/ と実行すると、index.htmlが生成され、ファイルはダウンロードされません。ファイルはそのまま見ると文字化けするのですが、lvでUTF8に変換するとディレクトリ名などが正常に確認できます。 なぜ、ファイルがダウンロードされないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

? FTPに繋がるなら mget でできない?

gaziroh
質問者

お礼

wget を定期的に走らせたいと思っていました。 とりあえず、mget でチャレンジします。 ありがとうございました。

関連するQ&A

  • FTPサーバ(IIS)のファイルをwgetで取得することができません。

    FTPサーバ(IIS)のファイルをwgetで取得することができません。 ※IISの既定のFTPサイト(通常C:\Inetpub\ftproot)直下にftpuser1 というフォルダを作成しておくと、このFTPサイトに ftpuser1でログオンした際、 カレント・フォルダが「/ftpuser1」となります。 1.DOS窓から次のコマンドを入力します。 d:\wget\wget.exe ftp://○.○.○.○/ftpuser1/test.txt --debug --append-output=d:\wget\log.txt --tries=3 --wait=60 --directory-prefix=d:\wget\test --ftp-user=ftpuser1 --ftp-password=ftpuser1 2.失敗したのでログを確認します。 「ftp://○.○.○.○/ftpuser1/」にあるファイルを取得したいのですが、 「ftp://○.○.○.○/ftpuser1/ftpuser1/」を参照しに行ってました。 ↓ログ Logging in as ftpuser1 ... 220 Microsoft FTP Service --> USER ftpuser1 331 Password required for ftpuser1. --> PASS ftpuser1 230 User ftpuser1 logged in. Logged in! ==> SYST ... --> SYST 215 Windows_NT done. ==> PWD ... --> PWD 257 "/ftpuser1" is current directory. done. ==> TYPE I ... --> TYPE I 200 Type set to I. done. changing working directory Prepended initial PWD to relative path: pwd: '/ftpuser1' old: 'ftpuser1' new: '/ftpuser1/ftpuser1' ==> CWD /ftpuser1/ftpuser1 ... --> CWD /ftpuser1/ftpuser1 550 /ftpuser1/ftpuser1: The system cannot find the file specified. No such directory `ftpuser1'. Closed fd 908 ちなみにフォルダ「ftp://○.○.○.○/ftpuser1/ftpuser1/」を作成したところ、 ファイルは取得できました。 なぜ「ftp://○.○.○.○/ftpuser1/ftpuser1/」を参照しに行くのか分かりません。 原因等分かりましたらご教授お願いします。 環境 ・接続先FTPサーバ  Windows Server 2003 R2  IIS 6.0 ・接続元  Windows 2000  wget 1.11.4

  • wgetで

    wget http://****file1 -t1 --passive-ftp といった感じでダウンロードするとき wget http://****file1 -t1 --passive-ftp -q wget http://****file1 -t2 --passive-ftp -q と実行するとfile1のダウンロードを待たずして file2のダウンロードがはじまってしまいます。 file1のダウンロードが終わった後にfile2をダウンロードしたいのですが可能でしょうか? ヘルプをみたのですが、該当するような項目はなかったもので。 > wget -h > wGNU Wget 1.8.2

  • wgetコマンドの精度と取得階層数

    centos5 wgetコマンドを使って、WEBサイトのデータを丸ごと取得しました。 $ wget -r ftp://ftp.xxxxxx.co.jp/ ところが、下位階層のファイルやフォルダが取れていない事に気付きました。 ftpルート +-www   +-htdocs     +-content1     | +-file     | | +-image     | | | +-image1.png     | | +-css     | |   +-css1.css     | +-content1-1     | | +-file     | | | +-image     | | | | +-image1.png     | | | +-css     | | |   +-css1.css     | | +-index.html     | +-index.html     +-content2     +-image     | +-image1.png     +-css     | +-css1.css     +-js     | +-js1.css     +-index.html $ wget -r ftp://ftp.xxxxxx.co.jp/ で取得すると、下位階層のファイルが取得できていませんでした。 上記の例で言うと www/htdocs/content1/content1-1/file までは取れていて、 www/htdocs/content1/content1-1/fileの中身が空っぽです。 $ wget -r ftp://ftp.xxxxxx.co.jp/www や $ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs で取得しても状況は変わらず。 $ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/content1 まで指定すると、 www/htdocs/content1/content1-1/file/image www/htdocs/content1/content1-1/file/css と、その中のファイルまで取得できました。 これは、どういう事? wget自体が、単に調子悪いとドンドン取りこぼしていく信頼のおけない機能なのか? 取得階層数のデフォルトが5になっていて、それ以上は明示的に指定が必要なのか? 試しに $ wget -r -l 99 ftp://ftp.xxxxxx.co.jp/www/htdocs/content1 で99階層を指定してみると、最後までキッチリ取れました。 やっぱり、取得階層数のデフォルトが5なのか? それとも、通信が、たまたま調子良いか悪いかだけなのか? 取得階層数のデフォルトが5だとすれば、 $ wget -r ftp://ftp.xxxxxx.co.jp/ の時と $ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/ の時がダメで $ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/content1 の時が取れる意味が分からない。 謎です。

  • VB.NETでサーバーからFILEを取得する

    サーバー上にあるテキストファイルを FTPで取得したいのですが VBであればInetを使用して↓のように取得が可能 だったのですがVB.NETでのInetの使用方法がわかりません どなたかご存知の方がいらしたらご教授願えますか? また、別の方法がありましたらアドバイスをお願いします。 宜しくお願いいたします。 ==================== Dim FileName As String Inet.URL = "ftp://hostname/home/temp/" Inet.UserName = "username" Inet.Password = "password" Inet.Execute(, "GET test.txt " & FileName) Do While Inet.StillExecuting = True DoEvents() Loop MsgBox("ダウンロード終了") ====================

  • ftpコマンドを使ったファイル転送

    お尋ねします。 ftpコマンドを使って、接続したフォルダの配下のroot2というフォルダへファイル転送を行いたいのですが、どのようにコマンドを入力すればいいのでしょうか。 サーバーには、接続ができていることは確認できました。 C:\>ftp サーバー名 Connected to サーバー名 220 Microsoft FTP Service User (サーバー名:(none)):ユーザー名 331 Password required for ユーザー名. Password: 230 User ユーザー名 logged in. ftp> よろしくお願いします。

  • バッチファイルにてFTPで指定したファイルを取得する

    OSはWindoswXPProです。 以下のようなBATファイルとバッチファイルを作成しました。 ---FTP.bat--- echo off ftp -s:get.ftp ---get.ftp--- open 10.0.X.X username password cd /log get log.yymmdd(実際には日付) c:\access_all_log.txt quit logというディレクトリには日次でログファイルが作成され ファイル名としてlog.yymmddと名づけられています。 やりたいことは2つあります。 1つめはftpするファイル名の日付部分をコマンドなどから 範囲指定して取得するファイルを指定できないか。 (たとえば070301~070315のファイルを一括で取得したい) 2つ目はftpでのファイル取得終了後に続いて バッチスクリプトを流したいのですが、その方法。 お分かりになる方いらっしゃいましたらよろしくお願いいたします。

  • ファイル名の取得について

    Perl5で @FTPlist = $FTP -> ls("*.csv"); でCSVファイル名を取得し、それをもとにローカルにダウンロードしようとしたのですが、パーミッションから表示されうまくいきません。 どのようにすればファイル名を取得できるのでしょうか。 方法は特に問いません。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 日本語ファイル名のバックアップ

    WEBサーバーの中に日本語のファイル名のデータがありまして、ローカルにFTPソフトでバックアップを取りたいと思いますが、FFFTPで文字コードをutf-8にチェックすると、日本語のファイル名はダウンロードできるのですが、ファイル名に「?」のマークがあるファイルだと、「ファイル、フォルダ名に使えない文字があります。名前を変更して下さい」と出ます。かなり沢山ファイルがあるので一気にダウンロードしたいのですが、どうしたらよいでしょうか?ちなみに全て画像ファイルです。どなたかご教授お願いします。

  • NFSサーバーのファイルを取得する

    今、RedHat9でNFSサーバーを立ち上げました。 /etc/exportsにアクセスできるディレクトリ指定をしました。 テストのため、クライアントを同一PCとしています。 取得したいファイルを得る場合はどのようにしたらいいのでしょうか? wgetコマンドを用いてサーバーのアドレスを指定して取得したいファイルを指定する? (/etc/exports) /home/user1 クライアント側のIPアドレス(rw) 取得したいファイルがもし、 /home/user1/sample/get_1.txt の場合、 wget ftp://NFSサーバーIPアドレス/取得したいファイルのディレクトリパス 格納先 どのようにして取得したいファイルおよび格納先していを行うのかわかりません。 よろしくお願い致します。

  • wgetを使ってデータをサーバに送ったら0ファイルが作成される

    クライアントからWGETを使ってデータを送信し サーバのASP.NETで受け取りファイルを作成したら 中身のないファイルが作成されました。 何とかWGET→ASP.NETの連携でクライアントにある CSVデータをサーバにコピーしたいのですが、 詰まってしまったので、アドバイスをお願いします。 クライアント os: windowsXP WGET ------------------------------------------------------ wget --post-data="name_csv=utf8.csv" --post-file="filename=c:\\wget\utf8.csv" http://IPアドレス/printdata/catchcsv.aspx?name_csv=utf8.csv ------------------------------------------------------ サーバ os: windows server 2003 webserver: iis asp.net ---------------------------------------------------- <%@Language="VBScript" Debug="true"%> <% Dim name_csv As String Dim strCreateFile As String Dim data_csv Dim stm name_csv = Request.Form("name_csv") data_csv = Request.Form("filename") strCreateFile = "c:\inetpub\wwwroot\AA\" + name_csv stm = CreateObject("ADODB.Stream") stm.Type = 2 stm.Open stm.WriteText(data_csv) stm.SaveToFile(strCreateFile, 2) Response.end() %> ----------------------------------------------