web-dev-qa-db-ja.com

wgetを使用してFTPディレクトリ全体を再帰的にダウンロードする

ホスト間ですべてのファイルとフォルダをコピーしたい。古いホスト上のファイルは/ var/www/htmlにあり、そのサーバーへのFTPアクセスしか持っておらず、すべてのファイルをTARすることはできません。 FTP経由で古いホストに定期的に接続すると、/ home/adminフォルダーに移動します。

新しいサーバーから次のコマンドを実行してみました。

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

しかし、私が得るのは、作成されたindex.htmlファイルだけです。

FTPでwgetを再帰的に使用するための正しい構文は何ですか?

97
user9406

-m--mirrorでお試しください

wget -m ftp://username:[email protected]
129
Dave Cheney

あなたはそれを正しく持っています、あなたは最後に*が必要です:

wget -r ftp://username:[email protected]/dir/*

共有サーバーの場合、次のように使用できます。

wget -r ftp://1.2.3.4/dir/* --ftp-user=username --ftp-password=password

ほとんどの共有サーバーには、username @ hostnameのようなftp-usernameがあるため、最初のwgetコマンドは機能せず、2番目のコマンドは正常に機能します。

39
Formoda

Wgetの他に、スクリプトモードでlftpを使用することもできます。次のコマンドは、特定のリモートFTPディレクトリのコンテンツを特定のローカルディレクトリにミラーリングし、cronジョブに配置できます。

lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'

ディレクトリへの再帰を自動的に処理し、データのダウンロード元のリモートソース開始ディレクトリを指定できます。

7
zappan

以下のwgetコマンドを確認して、FTPからデータを再帰的にダウンロードします。

wget --user="<user-name>" --password="<password>" -r -np -nH --cut-dirs=1 --reject "index.html*" "<URL to download files>"

-r:再帰的にダウンロードするためのものです。

-np:親が昇順しないためのものです。

-nH:URLと同じ名前のディレクトリ(abc.xyz.comなど)の作成を無効にするためのものです。

--cut-dirs:親ディレクトリの数を無視するためのものです。このオプションの値は、コマンドによって異なります。

上記のコマンドを実行すると確認できます。

5
AVJ

「curlftpfs-ftpホストをローカルディレクトリとしてマウントする」を使用できます。マウントすると、「cp -r」などの通常のファイルツールを使用できます。

5
chmeee

再帰の深さのため、-rではなく-mを使用してください。

http://www.editcorp.com/Personal/Lars_Appel/wget/wget_2.html#SEC11

3
Bojan Hrnkas

うまくいくはずです:

wget -r ftp://ftp:[email protected]/tst/
2
rkthkr

使用する:

wget -m ftp://192.168.0.1

そして、それはすべてのファイルとフォルダをミラーリングします。

2
Rajat

前述のとおり、FTP経由でログインすると/ home/adminフォルダーに移動し、必要なファイルは/ var/www/htmlにあります

私はこれがあなたの場合にうまくいくと思います:

wget -r ftp://192.168.0.1/../../var/www/html
1
kubanczyk

それが正しい構文です。予期した結果が得られない理由がわかりません。

相変わらずそれを行う方法は複数あります。 ncftp、特にncftpgetを試してください

1
goo

これをcronなどにダンプしようとしているのかどうかはわかりますが、通常のクライアントとmgetを使用してサーバーにFTPで転送するだけではどうですか*?これは成功へのより早い道かもしれません。

1
dr.pooter

ユーザー名がbrinkster/usernameのWindowsホスティングに遭遇したので、次の構文を使用するとwgetでエラーがスローされます。

wget -m ftp://brinkster/username:[email protected]

これを乗り越えるには、

wget -m ftp://brinkster%2Fusername:[email protected]

私はWindowsホスティング@ brinksterでこれに直面しなければなりませんでした。

0
Anto Joseph