每 5 分钟就会通过 lftp 将一些新文件下载到本地目录。我需要仅将不存在的文件上传到另一个 ftp。到目前为止我的脚本是:
#! /bin/bash
today=$(date +%Y%m%d)
today_files="rec."$today"_"
programa_dir="/home/user/local-dir"
# Download files, that do not exist in the local directory
lftp <<EOF
open -u user,pass ftp1
mget "$today_files*" -O $programa_dir
bye
EOF
# Upload the files
lftp <<EOF
open -u user,pass ftp2
lcd $programa_dir
mirror -R
bye
EOF
镜像 -R 命令无法识别第二个 ftp 的远程目录中仅存在少数文件。
有办法解决这个问题吗?我只需要检查文件名,而不是文件的创建或修改时间。
对于我尝试过的第二个 ftp
lftp <<EOF
open -u user,pass ftp2
mput $programa_dir/* -O /
bye
EOF
结果是相同的 - lftp 上传所有文件,而不仅仅是不存在的文件。
答案1
我目前无法访问 LFTP,但我怀疑您正在寻找参数--only-missing
,该参数只能与mirror
.
尝试这个:
lftp <<<EOF
open -u user,pass ftp2
mirror --reverse --only-newer $programa_dir/* /
bye
EOF
答案2
如果将 set 添加xfer:clobber off;
到lftp 命令脚本中,将避免覆盖现有文件。