파일을 다운로드한 다음 원격 디렉터리로 이동하는 LFTP 스크립트

파일을 다운로드한 다음 원격 디렉터리로 이동하는 LFTP 스크립트

나는 다음을 발견했다 파일을 다운로드하는 LFTP 스크립트. 스크립트는 적합하지만 현재는 성공적인 전송 후 파일을 삭제합니다. 하지만 전송 후 파일을 원격 서버의 다른 디렉터리로 이동하고 싶습니다(예: 백업). 검색했지만 mmv 명령에 대한 매개변수를 찾지 못했습니다.

누군가 이 작업을 수행하는 방법을 말해 줄 수 있습니까?

감사해요.

답변1

0. mget 사용자 매뉴얼

lftp :~> ? mget

  • -c 계속, 전송 재개
  • -d는 파일과 동일한 이름의 디렉토리를 생성하고
    현재 디렉토리 대신 그 안에 파일을 넣습니다.
  • -E는 성공적인 전송 후 원격 파일을 삭제합니다.
    ....

1. 원격 파일 삭제

원격 파일 삭제 옵션 문제-이자형:

mget -E $REGEX그것을로 바꾸다mget $REGEX

2. 파일 이동

mv파일 이름을 바꾸는 명령

mmv파일 이동 명령


이동하는 동안 문제가 발생하는 경우 일반적 으로 fileA.txt(userA가 생성), Folder_Backup_B(userB가 생성)와 같은 자격 증명 때문이지만 ,
fileA.txt를 Folder_Backup_B로 이동하고 mmv: Access failed: 550 Rename failed.
동일한 사용자에게 필요한 mmv를 가져옵니다( 또는 루트 슈퍼유저와 같은 것) 생성/복사/이동

내 테스트에는 다음 디렉토리가 있습니다.
원격 디렉토리

  • /홈/tyacode/test_ftp#REMOTE_DIR
  • /홈/tyacode/백업#REMOTE_BACKUP_DIR

lftp를 사용할 때 소스/home에서 백업 폴더에 액세스할 수 없으므로 변수를 수정합니다.

REMOTE_DIR="/home/tyacode/test_ftp/"
REMOTE_BACKUP_DIR="../backup/"

호스팅된 FTP를 사용하면 상황이 달라질 수 있습니다.


3. 스크립트 수정

#!/bin/bash
PROTOCOL="ftp"
URL="server.example.com"
USER="user"
PASS="password"
REGEX="*.txt"
LOG="/home/user/downloads/script.log"
LOCAL_DIR="/home/user/downloads"
REMOTE_DIR="dir/remote/server/file_directory"
REMOTE_BACKUP_DIR="dir/remote/server/backup_directory"

cd $LOCAL_DIR
if [  ! $? -eq 0 ]; then
    echo "$(date "+%d/%m/%Y-%T") Cant cd to $LOCAL_DIR. Please make sure this local directory is valid" >> $LOG
fi

lftp  $PROTOCOL://$URL <<- DOWNLOAD
    user $USER "$PASS"
    cd $REMOTE_DIR
    mget $REGEX
    mmv $REGEX $REMOTE_BACKUP_DIR 
DOWNLOAD

if [ ! $? -eq 0 ]; then
    echo "$(date "+%d/%m/%Y-%T") Cant download files. Make sure the credentials and server information are correct" >> $LOG
fi

관련 정보