【发布时间】:2018-04-02 11:34:38
【问题描述】:
我必须完成一项将 100 多个备份 .tar.gz 文件传输到 ftp 备份服务器的 cron 任务。卡在组合 find 命令中
find /home/backup -mtime -1 -mmin +59 -type f -name "*.tar.gz*"
这部分工作正常,脚本部分:
#!/bin/sh
USERNAME="user"
PASSWORD="password"
SERVER="someip"
FILE="/home/backup"
DATE="`date +%Y-%m-%d-%H.%M.%S `"
BACKUPDIR="/backup/${DATE}/"
ftp -inv $SERVER <<EOF
user $USERNAME $PASSWORD
mkdir $BACKUPDIR
cd $BACKUPDIR
mput $FILE/*.tar.gz*
quit
EOF
为此
00 12 * * * find /home/backup -mtime -1 -mmin +59 -type f -name "*.tar.gz*" -exec /root/ftp.sh {} \;
不起作用。请不要 scp/ssh 建议)必须使用 ftp 来完成。
【问题讨论】:
-
在 cronjob 中,您似乎使用
find为每个tar.gz文件调用一次脚本,但在脚本中您使用mput和通配符,就像您认为脚本正在传输很多文件... -
另外,您没有在脚本中设置 PATH,因此您有点希望它能够以某种方式知道在哪里可以找到
date和ftp。 -
感谢您的评论,马克。应尝试以这种方式更改脚本。注意到
date或ftp没有问题,可能使用系统变量。 -
我建议将
mput $FILE/*.tar.gz*替换为mput $1。 -
输出看起来像这样
/home/backup/20180402_122053_full.tar.gz.29 /home/backup/20180402_122053_full.tar.gz.94 /home/backup/20180402_122053_full.tar.gz.82 /home/backup/20180402_122053_full.tar.gz.3 /home/backup/20180402_122053_full.tar.gz.63