본문 바로가기
OS/Linux

ftp 백그라운드로 전송 (lftp)

by 강시공 2024. 12. 6.
반응형
반응형

 

sftp / scp 로 전송하는 것이 암호화 통신이 되기 때문에 해당 방법을 권장한다.

 

sftp / scp 가 지원 불가하고, ftp만 사용 가능한 경우

파일을 한,두 개 정도 옮기는 경우 ftp 로도 가능하지만,

겹치는 파일이 있거나, 디렉터리 내부 하위 파일까지는 모두 옮겨주지 않아 매우 곤란하다.

 

전송 중 끊긴 파일 같은 것들이 있는 경우  ftp/sftp 는 덮어쓰지만,

이를 위한 "미러링"기능이 있는 lftp 가 있다.

 

- 로컬서버 : 175.X.X.X

- 데이터를 전송할 원격 서버 : 200.X.X.X

(상대방이 관리하는 서버로 FTPDATA 및 FTP 포트가 이미 방화벽이 오픈되어있다고 가정함)

 

- 전송할 데이터는 로컬서버의 /app/upload 데이터 를 원격서버의 /part1/ 경로에 전송한다.

1. 방화벽 Open / 클라우드 방화벽을 사용하기 때문에

로컬서버(175.X.X.X )에서 200.X.X.X로 FTP DATA Port 20번, FTP 포트 21번을 Outbound만 열어주면 된다. 

 

2. 아래의 쉘 스크립트 파일을 로컬 서버에 업로드 해준다.

파일명 : lftp.sh

#!/bin/bash
# lftp를 사용하여 파일 전송
# 명령어 양식
# lftp -u FTP유저명,'FTP패스워드' FTP전송할서버 -e "mirror -R [로컬서버경로] [원격서버경로]; bye"
lftp -u FTP유저명,'FTP패스워드' 200.X.X.X -e "mirror -R /app/upload /part1/; bye"

 

3. lftp.sh 파일의 권한을 조정해준다.

# chmod 777 lftp.sh

 

4. lftp.sh 를 nohup 백그라운드로 실행시켜준다.

# nohup lftp.sh &

 

5. 상대 FTP 담당자 (200.X.X.X  서버)에게 파일이 정상적으로 수신되고 있는지 확인한다.

 

6. 실행한 lftpd.sh 파일은 삭제한다.

 

반응형