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 구문에 있습니다.) 다음과 같이 또 다른 슬래시를 추가하고 URL 인코딩하여 해결했습니다.
wget -m ftp://user:[email protected]/%2Ffoo/bar/
인코딩 없이도 슬래시만 추가하면 작동합니다.
wget -m ftp://user:[email protected]//foo/bar/
첫 번째 슬래시는 삭제되고(호스트와 경로 사이의 구분 기호로만 사용됨) 두 번째 슬래시는 실제로 경로의 일부로 계산됩니다.
답변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에서 파일 다운로드
이 답변에 대해 질문이나 문의사항이 있으면 댓글을 남겨주세요. 명령을 시도하기 전에 제가 제공하는 각 링크를 주의 깊게 읽어 보시기 바랍니다. 오해를 바로잡고 게시물을 개선할 수 있도록 피드백을 보내주셔서 감사합니다. 필요한 경우 답변을 업데이트할 수 있습니다.
행운을 빌어요!