Linux で FTP 経由でフォルダーを再帰的にダウンロードする方法 [終了]
-
02-07-2019 - |
質問
コマンドラインFTPクライアントを使用してフォルダーをFTPしようとしていますが、これまでのところ、個々のファイルを取得するには「get」しか使用できません。
解決
通常は 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.
他のヒント
Thibaut Barrè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 つのコンポーネントをフィルタリングするために使用されます。二重スラッシュは追加のコンポーネントを意味します。
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
もし lftp
がマシンにインストールされている場合は、使用してください mirror dir
. 。これで完了です。ディレクトリを再帰的にダウンロードする場合は、以下の Ciro によるコメントを参照してください。
ご利用いただければ scp
の代わりに ftp
, 、 -r
オプションがこれを実行します。FTP よりも最新のファイル転送メカニズムを使用できるかどうかを確認してみます。
代わりに WGet を使用してください。HTTP および FTP プロトコルをサポートします。
wget -r ftp://mydomain.com/mystuff
幸運を!
Linux にインストールできる「ncftp」があります。これは FTP プロトコルで動作し、ファイルやフォルダーを再帰的にダウンロードするために使用できます。Linux上で動作します。再帰的なフォルダー/ファイル転送に使用されており、正常に動作しています。
このリンクをチェックしてください... http://www.ncftp.com/
できれば、強くお勧めします tar
そして bzip
(または gzip
, (ボートに浮かぶものであれば何でも) リモート マシン上のディレクトリ。かなりのサイズのディレクトリの場合、帯域幅の節約には、おそらく圧縮/解凍に時間を費やす価値があります。
コマンドライン FTP にこだわりたい場合は、NcFTP を試してください。その後、get -R を使用してフォルダーを再帰的に取得できます。完成度も上がります。
wget -r ftp://url
Redhat と Ubuntu で完全に動作します
使用しないでください ftp
. 。のように telnet
安全なプロトコルは使用されておらず、パスワードは平文で送信されます。これにより、第三者がユーザー名とパスワードを非常に簡単に取得できるようになります。
リモート ディレクトリをリモートでコピーするには、次のオプションの方が適しています。
rsync
経由でログインできる場合は、これが最適なツールです。ssh
, 差分のみをコピーし、接続が切断された場合でも簡単に途中から再開できるためです。ssh -r
これは、ディレクトリ構造を再帰的にコピーするための 2 番目に良いオプションです。
見る:
PROMPT コマンドでプロンプトを切り替えます。
使用法:
ftp>cd /to/directory
ftp>prompt
ftp>mget *