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


19

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

로컬 서버 : ftplftp명령이 사용 가능 하거나 그래픽 도구가 없습니다 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.