FTP로 디렉토리 전체를 받는 방법(wget)

FTP를 이용해서 특정 디렉토리 및 그 하위 내용을 모두 받으려면 (recursively) 어떻게 해야 할까? 물론 FileZilla 같은 GUI FTP 클라이언트 프로그램을 사용하면 쉽게 받을 수 있다. 


하지만 GUI 프로그램을 사용할 수 없는 Shell 환경에서라면 wget 명령을 사용해서 받아오는 방법이 있다.


wget [OPTION]... [URL] ...


예를 들어, FTP 서버 IP가 1.1.1.1 이고 계정은 user1 암호는 password1 받고 싶은 디렉토리 경로가 /home/user1/download 라면 아래와 같이 입력하면 된다.


wget -r --ftp-user=user1 --ftp-password=password1 ftp://1.1.1.1//home/user1/download


-r 옵션이 recursive 하게 다운로드 받는 옵션이고 경로는 절대 경로를 입력하되 서버 주소와 경로명 사이에 / 가 2개임을 유의하자.


더 자세한 옵션에 대한 설명은 wget --help 라고 입력하면 볼 수 있다.


HP-UX ftp 로그인 문제 해결

증상 : 일부 또는 모든 사용자가 HP-UX 시스템에 ftp를 수행할 수 없습니다.

 

  

  1. 사전 점검

    (1) 주어진 시스템에 ftp를 실행할 수 있는 사용자가 없으면 우선 시스템에서 inetd가 실행 중인지 확인합니다.

$ ps -ef | grep inetd

  

실행 중이 아니면 inetd를 시작합니다.

$ /usr/sbin/inetd

  

(2) ftp 서비스가 해제되어 있을 수도 있습니다. /etc/inetd.conf에서 다음 줄을 확인합니다.

ftp stream tcp nowait root /usr/lbin/ftpd ftpd -l

  

이 줄이 없거나 주석 처리가 되어 있으면(파운드 기호(#)가 앞에 있으면) 이 줄을 추가하고(또는 파운드 기호를 제거하고) inetd를 다시 시작합니다.

/usr/sbin/inetd -c

  

(3) SAM을 사용하여 ftp의 상태를 확인하고 필요한 경우 설정할 수도 있습니다. Networking and Communications/Network Services로 이동합니다.

  

  

  1. 문제 해결

    ftp는 기본적으로 고정 목록에 대해 암호 정보(즉, 로그인하려는 사용자에 대한 /etc/passwd의 항목)를 확인하는 getusershell을 호출합니다. 이 쉘이 목록에 없으면 ftp는 사용자가 들어오지 못하게 하므로 자체 시스템에도 ftp를 수행하지 못할 수 있는 비정상적인 쉘을 사용하게 됩니다.

      

    getusershell 은 /etc/shells 파일을 참조하는데, 만약 /etc/shells 파일이 없거나 읽을 수 없는 상태라면 아래와 같은 시스템에서 기본적으로 제공하는 쉘을 리턴합니다.

    /sbin/sh

    /usr/bin/sh

    /usr/bin/rsh

    /usr/bin/ksh

    /usr/bin/rksh

    /usr/bin/csh

    /usr/bin/keysh

      

    (1) 해결1

    /etc/passwd 에서 해당 계정의 쉘을 시스템에서 기본적으로 제공하는쉘로 혹은 /etc/shells 에 있는 쉘로 수정

      

    (2) 해결2

    /etc/shells 에 해당 계정이 사용하는 쉘을 추가

      

    자세한 내용은 getusershell(3C), shells(4)를 참조하십시오.

      

      

'system > unix' 카테고리의 다른 글

HP-UX에서 ps 명령 -o 옵션 사용하기  (0) 2008.09.18
HP-UX 이더넷 설정 확인  (0) 2008.09.18
[SunOS] /home 디렉토리에서 계정 생성이 안될 때  (0) 2008.09.18
su 명령 사용 허가하기  (0) 2008.09.17
bash 환경 설정  (0) 2008.09.17