web-dev-qa-db-ja.com

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

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

303
Charles Ma

あなたは(少なくとも私自身の経験では)通常ftpを正しく処理するwgetに頼ることができます。例えば:

wget -r ftp://user:[email protected]/

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

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

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

EDIT@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.
593

Thibaut Barrereによって与えられた答えを補完するためだけに。

私が使った

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

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

  • -nHは、サーバー名にちなんで名付けられたディレクトリの作成を避けます
  • -ncは、宛先にすでに存在する場合は新しいファイルを作成しません(単にスキップされます)。
  • --cut-dirs = 5を指定すると、/ absolute/path/to /ディレクトリの内容を取得して、wgetを起動したディレクトリに配置できます。数字5は、パスの5つの要素を除外するために使用されます。二重スラッシュは追加のコンポーネントを意味します。
157
Ludovic Kuty
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
25
Vinko Vrsalovic

あなたのマシンにlftpがインストールされている場合は、mirror dirを使用してください。そして、あなたは終わりました。ディレクトリを再帰的にダウンロードしたい場合は、下記のCiroのコメントを参照してください。

20
Dilawar

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

17
Greg Hewgill

代わりにWGetを使用してください。 HTTPおよびFTPプロトコルをサポートしています。

wget -r ftp://mydomain.com/mystuff

がんばろう!

参照: http://linux.about.com/od/commands/l/blcmdl1_wget.htm

8
Jason Stevenson

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

このリンクをチェックしてください... http://www.ncftp.com/

7
Cypher

あなたがコマンドラインFTPに固執したいなら、あなたはNcFTPを試すべきです。その後、get -Rを使用してフォルダを再帰的に取得できます。あなたも完成するでしょう。

3
Jazz

可能であれば、リモートマシンのディレクトリtarbzip(またはgzip、フロートに関係なく)にディレクトリを作成することを強くお勧めします。

3
Hank Gay

wget -r ftp://url

RedhatとUbuntuのために完璧に動作する

2
Phillip

ftpを使うべきではありません。 telnetと同様に、安全なプロトコルを使用していないため、パスワードは平文で送信されます。これにより、第三者があなたのユーザー名とパスワードを入手することが非常に簡単になります。

リモートディレクトリをリモートでコピーするには、これらのオプションが優れています。

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

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

見る:

  • rsync のマニュアルページ

  • ssh のマニュアルページ

1
Tilo