나는 다음을 발견했다 파일을 다운로드하는 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