ftp 또는 lftp를 사용하여 재귀 적으로 디렉토리를 FTP 서버에 업로드하는 방법은 무엇입니까?


19

로컬 디렉토리를 원격 서버에 복사하기 위해 Linux 쉘 스크립트를 작성 중입니다 (기존 파일 제거).

로컬 서버 : ftp 및 lftp명령이 사용 가능 하거나 그래픽 도구가 없습니다 ncftp .

원격 서버 : FTP를 통해서만 액세스 할 수 있습니다. rsync 나 SSH, FXP가 없습니다.

lftp 스크립트를 생성하고 실행하기 위해 로컬 및 원격 파일을 나열하려고합니다. 더 좋은 방법이 있습니까?

참고 : 수정 된 파일 만 업로드하면 더할 수 있지만 필수는 아닙니다.


ncftp는 완전히 문제가 있습니까? 가장 쉬운 imho 것입니다. (그런 식으로 사용하면 할 것입니다)
— Sirex

Sirex : RedHat에서 기본적으로 제공되는 도구를 사용하여 수행하고 싶습니다. lftp를 사용할 수없는 것으로 판명되면 사용자가 ncftp를 설치하기위한 요구 사항을 추가 할 것입니다.
— Nicolas Raoul

wput(wget-like ftp-uploader) 의 문법 :wput dir/ ftp://user:pass@host/dir
— kenorb

답변:


39

lftp 는 특히 다음과 lftp mirror같이 한 단계로이를 수행 할 수 있어야합니다 .

편집 : lftp 명령 구문이 혼란스럽고 게시 한 원래 호출이 작동하지 않습니다. 다음과 같이 시도하십시오.

lftp -e "미러 -R {local dir} {remote dir}"-u {username}, {password} {host}

-e스위치에 대한 인수 주위의 인용 부호를 주목 하십시오 .


1
하나는 lftp는의 미러 모드가 FXP가 (내가 읽은 후 반대의 확신했다 사용할 수없는 경우에도 작동 나 팁을위한 tutorials.papamike.ca/pub/lftp.html 이 작업이 성공하기 위해서는 말한다 "두 서버는이 프로토콜을 지원해야합니다 "). 그러나이 특정 명령은 내 우분투 서버에서 실패합니다 : lftp : mirror : 이름 또는 서비스를 알 수 없음, 알 수없는 명령`-R '.
— Nicolas Raoul

나는 lftp를 더 잘 호출하여 대답을 되풀이했다.
— Phil Hollenback

나는 마침내 그것을 작동시킨다! 원격 및 로컬로 전환해야 작동합니다. 업데이트하여이 답변을 수락하겠습니다. 여기에 작동하는 명령 줄은 다음과 같습니다 lftp가 -e "거울 -R / tmp를 / mylocalfiles의 / var / www가"-u remoteuser, remotepassword RemoteServer에
— 니콜라스 라울

lftp 문서에서 -R을 사용할 때 로컬 및 원격 디렉토리를 전환해야한다고 생각했지만 잊어 버렸습니다. 내 답변을 업데이트했습니다.
— Phil Hollenback

어떻게 실패합니까? 더 자세한 출력을 위해 'lftp -vvv'를 실행하여 수행하려는 작업을 결정 했습니까?
— Phil Hollenback 님이

1

lftp의 미러 모드를 사용하려는 Phil의 아이디어에 따라이 명령은 다음과 같은 트릭을 수행합니다.

lftp -c 'open -e "mirror /tmp/thedir ftp://nico:mypass@remotehost/~/destination/" ftp://nico:mypass@localhost'

단점은 로컬 서버에 FTP 서버가 실행 중이어야한다는 것입니다.


1
cd {local_dir}
lftp {server}
cd {remote_dir}
mput {local_dir}/*

이것은 나를 위해 일했지만 많은 다른 시도가 실패했습니다. lftp에 들어가면 다음을 통해 더 많은 정보를 얻을 수 있습니다.

help mput

2
mirror -R여기 에서 사용하는 것이 좋습니다 .
— gauteh

@gauteh 당신이 맞아요. 최고의 답변 ^
— 오스틴

0

마침내 대답을 얻었다! !! 쉘 스크립트 ftpmirror.sh 작성

#!/bin/bash 
path = /local-dir-path
lftp -e "mirror -R $path /$path" -u username,password ftp-server-ip
  • 경로 = FTP 서버에 복사하려는 로컬 디렉토리
  • username = ftp 서버 사용자 이름
  • 비밀번호 = ftp 서버 비밀번호
  • ftp-server-ip = ftp 서버의 IP 주소

lftp 패키지가 설치되어 있지 않으면 yum을 사용하여 설치된 패키지입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.