728x90
lftp를 사용하여 FTP 서버에 접속하고 모든 파일을 로컬 디렉토리에 다운로드하는 스크립트
리눅스에서 FTP 클라이언트를 사용하여 FTP 서버에 접속하고 모든 파일을 다운로드하려면 ftp, lftp, wget와 같은 도구를 사용할 수 있습니다.
lftp는 강력하고 유연한 FTP/HTTP 클라이언트로 배치 작업에 적합합니다.
lftp 설치
Ubuntu
sudo apt-get update
sudo apt-get install lftp
CentOS
sudo yum install lftp
lftp 사용
lftp를 사용하여 FTP 서버에 접속하고 모든 파일을 다운로드하는 방법입니다.
lftp -u 사용자이름,비밀번호 ftp://서버주소
접속 후에 모든 파일을 다운로드하는 명령은 mirror 명령을 사용합니다. 예를 들어, 모든 파일을 현재 디렉토리에 다운로드하려면 다음과 같이 합니다.
mirror --verbose /원격_디렉토리 /로컬_디렉토리
예를 들어, 사용자 이름이 user이고 비밀번호가 password인 경우, FTP 서버 주소가 ftp.example.com이며, 원격 디렉토리가 /remote_dir이고 로컬 디렉토리가 local_dir이라고 가정합니다.
1. FTP 서버에 접속
lftp -u user,password ftp://ftp.example.com
모든 파일을 로컬 디렉토리에 다운로드
mirror --verbose /remote_dir /local_dir
728x90
자동화 스크립트 예제
.env 파일 생성
- 프로젝트 루트 디렉토리에 .env 파일을 생성합니다.
cd /root/cdn
vim .env
FTP_USER=ftpuser
FTP_PASSWORD=ftppassword1!
.env 파일 로드 스크립트 작성
- 스크립트를 작성하여 .env 파일에서 환경 변수를 로드합니다.
vim ftp_dev_download.sh
#!/bin/bash
# .env 파일 로드
if [ -f .env ]; then
export $(cat .env | grep -v '^#' | xargs)
fi
# 변수 설정
SERVER="ftp.sangchul.kr"
PORT="7777"
REMOTE_DIR="/"
LOCAL_DIR="/root/cdn/dev/"
LOG_FILE="/root/cdn/log/lftp_mirror.log"
# 로그 파일 디렉토리 생성
LOG_DIR=$(dirname "$LOG_FILE")
mkdir -p "$LOG_DIR"
# lftp 명령 실행
{
echo "Starting FTP mirroring process..."
lftp -u "$FTP_USER","$FTP_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 ftp_dev_download.sh
스크립트를 실행
bash ftp_dev_download.sh
스크립트 설명
- if [ -f .env ]; then ... fi : .env 파일이 존재하는지 확인하고 있으면 그 내용을 환경 변수로 로드합니다.
- export $(cat .env | grep -v '^#' | xargs) : .env 파일에서 주석을 제외하고 모든 줄을 환경 변수로 설정합니다.
- $FTP_USER와 $FTP_PASSWORD 환경 변수는 .env 파일에서 설정한 값을 사용하여 FTP 자격 증명을 설정합니다.
이 방법을 사용하면 스크립트 코드에서 직접적으로 민감한 정보를 노출하지 않고 .env 파일을 통해 안전하게 관리할 수 있습니다.
로컬 디렉토리를 S3 버킷에 미러링
로컬 디렉토리의 내용을 S3 버킷에 업로드하여 동기화하는 명령어입니다.
aws s3 sync /root/cdn/dev s3://your-bucket-name
728x90
'리눅스' 카테고리의 다른 글
[draft] 우분투에 CRI-tools를 설치하는 방법 (0) | 2024.07.15 |
---|---|
[draft] 개인 키로 공개 키 생성하는 방법 (0) | 2024.07.14 |
[draft] docker compose의 version 속성이 폐지되었다는 경고 메시지 (0) | 2024.07.07 |
[draft] Docker Compose를 사용하여 Blue-Green 배포를 구현하는 방법 (0) | 2024.07.06 |
[draft] 우분투에 JDK을 설치하고 환경 변수를 설정하는 방법 (0) | 2024.07.06 |