본문 바로가기

리눅스

[draft] 우분투에 lftp를 설치하고 사용하는 방법

728x90

우분투에 lftp를 설치하고 사용하는 방법

lftp 설치하기

패키지 목록 업데이트

sudo apt-get update

lftp 설치

sudo apt-get install -y lftp

lftp 사용하기

기본 사용법

lftp를 사용하여 FTP 서버에 접속하고 파일을 전송하려면 다음과 같이 명령어를 입력합니다.

lftp ftp://username@ftp.example.com
  • username : FTP 서버에 로그인할 사용자 이름
  • ftp.example.com : 접속할 FTP 서버의 주소

FTP 서버 접속 및 명령어 실행

lftp를 사용하여 FTP 서버에 접속하면 lftp 프롬프트가 나타납니다. 이 상태에서 다양한 FTP 명령어를 사용할 수 있습니다.

 

FTP 서버의 디렉토리 목록 보기

ls

로컬 시스템의 디렉토리로 이동

lcd /path/to/local/directory

원격 서버의 디렉토리로 이동

cd remote_directory

파일 다운로드

get filename

파일 업로드

put filename

mirror 명령어로 디렉토리 전체 동기화

lftp의 강력한 기능 중 하나인 mirror 명령어를 사용하여 원격 서버와 로컬 디렉토리 간의 전체 디렉토리 동기화가 가능합니다.

lftp ftp://username@ftp.example.com -e "mirror remote_directory local_directory; exit"
  • remote_directory : 원격 서버의 동기화할 디렉토리 경로
  • local_directory : 로컬에 동기화할 디렉토리 경로

연결 종료

  • 연결 lftp에서 FTP 서버와의 연결을 종료하려면 다음 명령어를 사용합니다.

주요 lftp mirror 옵션들

  • --delete : 로컬 디렉토리에서 원격 서버에 없는 파일들을 삭제합니다.
  • --reverse 또는 -R : 원격 서버 대신 로컬 디렉토리를 소스로 사용하여 업로드합니다.
  • --only-newer : 이미 존재하는 파일을 덮어쓰지 않고, 더 새로운 파일만 복사합니다.
  • --verbose 또는 -v : 작업 진행 상황을 자세히 출력합니다.
  • --exclude 또는 -x : 지정한 패턴과 일치하는 파일을 제외합니다. 예: --exclude "*.tmp"
  • --include 또는 -i : 지정한 패턴과 일치하는 파일만 포함합니다. 예: --include "*.jpg"
  • --parallel[=N] : 다중 연결을 사용하여 병렬로 N개의 파일을 동시에 전송합니다. 기본값은 1입니다.
  • --continue 또는 -c : 이미 다운로드된 파일을 이어받기합니다.
  • --no-empty-dirs : 빈 디렉토리를 생성하지 않습니다.
  • --allow-chown : 파일 소유자 변경을 허용합니다.
  • --allow-suid : setuid/setgid 비트를 허용합니다.
  • --no-perms : 파일 권한을 설정하지 않습니다.
  • --no-umask : umask 설정을 무시합니다.

기본 사용법

lftp -e "mirror /remote/directory /local/directory" -u user,password ftp://example.com

더 새로운 파일만 동기화하고, 로컬에 없는 파일 삭제

lftp -e "mirror --only-newer --delete /remote/directory /local/directory" -u user,password ftp://example.com

로컬 디렉토리를 원격 서버와 동기화 (업로드)

lftp -e "mirror --reverse --only-newer /local/directory /remote/directory" -u user,password ftp://example.com

특정 파일 유형만 동기화 (예: .jpg 파일)

lftp -e "mirror --include '*.jpg' /remote/directory /local/directory" -u user,password ftp://example.com

병렬로 여러 파일 동기화

lftp -e "mirror --parallel=4 /remote/directory /local/directory" -u user,password ftp://example.com

lftp 다운로드 스크립트

mkdir -p /root/lftp
cd /root/lftp
vim lftp-download.sh
#!/bin/bash

# 환경 변수 설정
USER="FTP_ID"
PASSWORD="FTP_PASSWORD"
SERVER="FTP_SERVER_IP"
PORT="FTP_PORT"
REMOTE_DIR="/"
LOCAL_DIR="/root/lftp/prod"
LOG_FILE="/root/lftp/log/lftp_mirror.log"

# 로그 파일 디렉토리 생성
LOG_DIR=$(dirname "$LOG_FILE")
mkdir -p "$LOG_DIR"

# lftp 명령 실행
{
    echo "Starting FTP mirroring process..."
    lftp -u "$USER","$PASSWORD" "ftp://$SERVER:$PORT" <<EOF
    mirror --verbose $REMOTE_DIR $LOCAL_DIR
    bye
EOF

    if [ $? -eq 0 ]; then
        echo "FTP mirroring completed successfully."
    else
        echo "FTP mirroring encountered an error."
    fi
} 2>&1 | tee -a "$LOG_FILE"

# 권한 설정을 통해 로그 파일의 보안도 강화
chmod 600 "$LOG_FILE"
chmod +x lftp-download.sh

 

728x90