我发现了以下内容 下载文件的 LFTP 脚本。该脚本将适合,但目前它会在成功传输后删除文件。但我希望在传输后将文件移动到远程服务器上的另一个目录(例如备份)。我搜索了但没有找到mmv命令的参数。
有人可以告诉我该怎么做吗?
谢谢。
答案1
0. mget使用手册
lftp :~> ? mget
- -c 继续,恢复传输
- -d 创建与文件名相同的目录并将
文件放入其中而不是当前目录 - -E 传输成功后删除远程文件
....
1.删除远程文件
选项删除远程文件的问题-E:
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 需要相同的用户(或像 root 这样的超级用户)创建/复制/移动
在我的测试中我有目录:
远程目录
- /home/tyacode/test_ftp#REMOTE_DIR
- /home/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