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
'리눅스' 카테고리의 다른 글
[draft] 우분투에 containerd를 설치하고 설정하는 방법 (0) | 2024.07.17 |
---|---|
[draft] cgroup 버전 확인 (0) | 2024.07.16 |
[draft] 우분투에 CRI-tools를 설치하는 방법 (0) | 2024.07.15 |
[draft] 개인 키로 공개 키 생성하는 방법 (0) | 2024.07.14 |
[draft] FTP 서버에 접속하고 모든 파일을 로컬 디렉토리에 다운로드하는 스크립트 (0) | 2024.07.11 |