用于下载文件然后将其移动到远程目录的 LFTP 脚本

用于下载文件然后将其移动到远程目录的 LFTP 脚本

我发现了以下内容 下载文件的 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

相关内容