ユーザーホームディレクトリ外のディレクトリでwgetを使用する

ユーザーホームディレクトリ外のディレクトリでwgetを使用する

wgetを使用してFTPを介してディレクトリをミラーリングしようとしています。私が使用するコマンドは

wget -m ftp://user:[email protected]/foo/bar/

ただし、実行すると、次のような結果が表示されます。

--2018-10-10 15:01:32--  ftp://user:*password*@192.168.1.1/foo/bar/
       => ‘192.168.3.150/foo/bar/.listing’
Connecting to 192.168.1.1:21... connected.
Logging in as user ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /usr/user/foo/bar ... 
No such directory ‘foo/bar’.

マニュアルページを検索してグーグルしましたが、わかりません。 wgetに "/usr/user/foo/bar/"の代わりに "/foo/bar/"ディレクトリを実際にダウンロードさせるにはどうすればよいですか?

答え1

stackoverflowにも同様の質問があります。(これはwgetではなくJavaに関連していますが、実際には基本的な問題は言語に依存しないURL構文にあります。)

wget -m ftp://user:[email protected]/%2Ffoo/bar/

エンコードなしでスラッシュだけを追加すると機能します。

wget -m ftp://user:[email protected]//foo/bar/

最初のスラッシュは削除され(ホストとパス間の区切り文字としてのみ使用されます)、2番目のスラッシュは実際にはパスの一部として計算されます。

答え2

wget次のコマンドを使用して特定のディレクトリをダウンロードできる必要があります。

wget -m 'ftp://[user]@192.168.1.1/%2ffoo/bar' -O /foo/bar

パスワードはbash履歴に表示されるため、URLにパスワードを入力しないでください。もちろん、この順序は他の場所/foo/barから離れているという意味です。このような場所にいる/場合は、コマンドにフルパスを含める必要があります。/foo/bar/var/www

私はあなたがUNIXに似たものを使用していると仮定しているので、あなたが使用する特定の実装/usr/userの機能に違いがあるかもしれませんwget

選択肢は次のとおりですcurl

curl -u [user] 'ftp://192.168.1.1/%2fpath/to/foo/bar' -o /path/to/foo/bar

次のリンクを読んでください。

FTP URL
wgetの使い方
wgetを使用してFTPディレクトリを再帰的にダウンロードする
wgetを使用して現在のディレクトリとは異なるディレクトリにダウンロード
wgetで場所を指定する方法は?
cURLを使用してFTPからファイルをダウンロードする

この回答について質問や質問がある場合は、コメントを残してください。コマンドを試す前に、私が提供する各リンクを注意深く読んでください。誤解を解決し、投稿を改善するためにフィードバックを送信していただきありがとうございます。必要に応じて回答を更新できます。

頑張ってください!

関連情報