为什么ftp脚本失败并且/ home / dbadmin是目录错误?

时间:2013-06-24 17:08:08

标签: bash ftp-client

给出以下脚本

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /home/dbadmin/backup
mput *.gz
quit
END_SCRIPT

包含* .gz文件的目录mput *.gz中的/backups会导致此错误:

mput t1.gz? mput t2.gz? ./temp.sh: line 14: /home/dbadmin: is a directory

我不确定如何在没有put单个文件名的情况下更改脚本。我想mput此目录中的所有文件。

在END_SCRIPT之后输出0,错误消失了,我感兴趣的是为什么会这样。

1 个答案:

答案 0 :(得分:0)

如何将mput替换为生成的put

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /home/dbadmin/backup
$(find *.gz -maxdepth 0 -type f -printf 'put %p\n')
quit
END_SCRIPT

工作原理:

当解析HERE-IS-DOCUMENT时,find *.gz ...将为掩码*.gz找到的每个文件生成多行:

put 1.gz
put 2.gz
...

并且ftp将执行的脚本内容将是这样的:

quote USER your_user_name
quote PASS your_passwd
cd /home/dbadmin/backup
put 1.gz
put 2.gz
...
quit

关于/home/dbadmin: Is a directory我相信你的脚本中有单行/home/dbadmin(或类似$SOME_COMMAND /home/dbadmin)。