LinuxでFTP経由でフォルダを再帰的にダウンロードする方法[終了]


325

コマンドラインのftpクライアントを使用してフォルダーをftpしようとしていますが、これまでのところ、個々のファイルを取得するには「get」しか使用できませんでした。


5
正解はlkutyによる2011年4月6日14:13からです。は使用しないでくださいmget。再帰的ではありません。09月22日09:01からの回答ティボーバレールは理解しやすいですが-l 0、コメントに記載されているようにオプションを追加する必要があります
chriscatfr

回答:


635

通常、ftp getを適切に処理するwgetを使用できます(少なくとも私の経験では)。例えば:

wget -r ftp://user:pass@server.com/

-mミラーリングに適したものを使用することもできます。現在はと同等-r -N -l infです。

資格情報の詳細に特殊文字が含まれている場合は、--userおよび--password引数を指定して、それを機能させることができます。特定の文字を使用したカスタムログインの例:

wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/

編集 @asmaierが指摘したように、-r再帰のためであっても、デフォルトの最大レベルは5であることに注意してください。

       -r
       --recursive
           Turn on recursive retrieving.

       -l depth
       --level=depth
           Specify recursion maximum depth level depth.  The default maximum depth is 5.

サブディレクトリを見逃したくない場合は、ミラーリングオプションを使用して-mください:

       -m
       --mirror
           Turn on options suitable for mirroring.  This option turns on recursion and time-stamping, sets infinite
           recursion depth and keeps FTP directory listings.  It is currently equivalent to -r -N -l inf
           --no-remove-listing.

121
よりよく使用してくださいwget -m--mirror)。wget -rデフォルトでは、再帰の深さは5に制限されています。
asmaier '07 / 07/19

13
私もRed Hat を使用する必要が--userあり--passwordました。私のwgetは次のとおりです。GNU Wget 1.11.4 Red Hat modifiedバージョンのものなのか、それともディストリビューションなものなのか...
devin

61
-l 0を使用し--mirrorて無限再帰レベルを設定できるため、.listingファイルなどの望ましくない副作用が発生する可能性のあるを使用する必要はありません
Hnatt

28
使用しますwget --ask-password -rl 99 ftp://user@server.com。この方法では、パスワードは表示されpsず、履歴に残りません。もちろん、ftpの性質上、暗号化されずにサーバーに送信されます。
Walter Tross 2013年

7
bash newbsのリマインダー:ユーザー名またはパスワードに制御文字(など$)がある場合は、一重引用符を使用する必要があります。例--user='user' --password='pa$$word'
tobek

164

ThibautBarrèreの答えを補足するために。

使った

wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory

サーバー名の後ろの二重スラッシュに注意してください。スラッシュを追加しない場合、パスはユーザーのホームディレクトリからの相対パスになります。

  • -nH サーバー名にちなんで名付けられたディレクトリの作成を回避します
  • -nc 宛先にすでに存在する場合、新しいファイルの作成を回避します(スキップされます)
  • --cut-dirs=5/ absolute / path / to / directoryのコンテンツを取得し、それをwgetを起動するディレクトリに配置できます。数値5は、パスの5つのコンポーネントを除外するために使用されます。二重スラッシュは追加のコンポーネントを意味します。

3
鮮やかさ。すでに存在するファイルをスキップする機能は、サーバー移行での最新の追加に追いつくのに最適です。rsyncの方が効率的で柔軟性がありますが、そのオプションが利用できない場合があり、FTPのみを使用できます。
Jason

ここで、特に-ncと--cut-dirsの素敵なパラメータ。共有してくれてありがとう!
ランスクリーブランド

2
私は常に「既存のファイルをスキップする」を信頼しているわけではありません。どちらかが不完全であるか、サイズと内容が異なる可能性があるためですが、彼はオプションに言及しました
Daniel W.

今日でも、rsyncを使用できない場合は、このwgetコマンドを使用します。-ncと--cut-dirsはとても便利です!
2015年

4
驚くばかり!また、コマンドラインでパスワードを入力したくない場合は、--ftp-user=USERおよびを使用できます--ask-password
2015年

25
ncftp -u <user> -p <pass> <server>
ncftp> mget directory

私は、FTPサーバーへのログインのparamsを使用しますが、構造体を使用していない可能性open ftp://USERNAME:PASSWORD@HOSTncftpの開始後に...
feeela

+1-私はこの投稿が古いことを知っていますが、たまたま見つけただけで、ncftpは本当に使いやすかったです。ncftpgetで再帰的に取得するために-Rを使用しました
Zack

間違いなくより信頼性が高くwget、TARモードでも高速です。ありがとう!
lencinhaus 2013年

3
これはUbuntu 14.04で述べられているように機能しません。私にとってうまくいった構文は、mgetではなく「get -R directory」でした。
イワン

Ubuntu 14.04で私のために働いた。私はそれがすべてそこにあっただけでmgetする必要はありませんでした。
アシュレイ

22

lftpがマシンにインストールされている場合は、を使用しますmirror dir。これで完了です。ディレクトリを再帰的にダウンロードする場合は、下のCiroによるコメントを参照してください。


7
ところで、mirror -R dir再帰的なディレクトリのアップロード/更新を行います
Ciro Santilli郝海东冠状病六四事件法轮機能

1
mirror ./現在のパスにあるすべてのファイルとフォルダーを再帰的にダウンロードするためにも使用できます。
Nabi KAZ 14

mirror現在のディレクトリとそのサブフォルダーについては、単にと入力することもできます。
マイケル、

17

scp代わりにを使用できる場合ftp-rオプションがこれを行います。FTPよりも新しいファイル転送メカニズムを使用できるかどうかを確認します。


2
質問に現状のまま厳密に回答するわけではありませんが、これはまさに私の最初の考えだったので、これに投票しました。
metao

@ greg-hewgillのどちらを提案しますか?私にも同様の問題があります
ミハル・ゴンダ

1
scpは引き続きsshを使用しようとしますが、FTP資格情報しかない場合は機能しません。私はこだわって技術は、現代ではありません:(古き良き2008言って2008年からのコメントへの応答奇妙な感じが、私はあなたのコメントを掲示日に18を回した。
aexl


7

Linuxにインストールできる「ncftp」があります。これはFTPプロトコルで動作し、ファイルとフォルダを再帰的にダウンロードするために使用できます。Linux上で動作します。使用されており、再帰的なフォルダー/ファイル転送で正常に動作しています。

このリンクを確認してください... http://www.ncftp.com/


2
ncftpはWindowsでも機能します
Ilya

ncftp大好き!ありがとうございました。
jocull 2012年

3

あなたは、私は強くお勧めすることができた場合tarbzip(またはgzip、あなたのボートをどんなフロートに)、リモートマシンのための重大なサイズのディレクトリ上のディレクトリを、帯域幅の節約はおそらくZIP /解凍に値する時間になります。


おそらく2008年かもしれませんが、2013年には帯域幅はもはや問題ではなく、FTPはあるがコンソールアクセスはないかもしれません:-)
Daniel W.

3

コマンドラインFTPを使い続けたい場合は、NcFTPを試してください。次に、get -Rを使用して、フォルダーを再帰的に取得できます。また、完了を取得します。



1

使用しないでくださいftptelnet安全なプロトコルを使用していないように、パスワードはクリアテキストで送信されます。これにより、第三者によるユーザー名とパスワードの取得が非常に簡単になります。

リモートディレクトリをリモートでコピーするには、次のオプションの方が適しています。

  • rsyncは、ssh差分のみをコピーし、接続が切断された場合に途中で簡単に再起動できるため、経由でログインできる場合に最適なツールです。

  • ssh -r ディレクトリ構造を再帰的にコピーするための2番目に最適なオプションです。

見る:


安全ではなく、ftpのみ
JosFabre

2015年です。FTPは使用しないでください。
Tilo、2015

2
同意する。そして、より良いセキュリティのための提案が常に与えられるべきです。しかし、問題はFTPに関するものだったので、FTPを使用すべきではないと言っても
役に立た

私は敬意を払いません。彼らは仕事のために間違ったツールを使用しています。彼らは1980年代のftpではなく、安全で最新のツールの使い方を学ぶ必要があります。より具体的には、誰もFTPサーバーを実行する必要はありません:P
Tilo

4
申し訳ありませんが、先週、FTP接続のみが可能なサーバーにアクセスしていました。私の仕事はそこから移行することでした。
Antti Haapala 2016年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.