FTP Shell脚本不起作用

时间:2014-08-07 14:43:57

标签: linux shell ftp

好的,所以我试图将一些录制文件ftp到远程服务器进行备份。我对shell脚本非常困惑。 我的问题是:我想将远程服务器移动到整个文件夹/目录而不是FILE。我哪里错了?

这是当前的脚本:

HOST='10.113.68.50'
USER='sms'
PASSWD='Abc123451'
LOCALPATH='kmpy/unica/Campaign/partitions/partition1/CiktiDosyalari'
FILE=*.sms
DIR='SMS/'

ftp -n $HOST <<EOF
quote USER $USER
quote PASS $PASSWD
cd $DIR
lcd $LOCALPATH
put $FILE
quit
exit;
EOF

2 个答案:

答案 0 :(得分:0)

ftp put命令只能用于单个文件。如果您的*.sms扩展到更多,它将复制第一个文件,并为其指定列表中第二个文件的名称。 您应该使用mput命令,或者tar将所有内容放入一个存档中,将其传输,然后在另一端解压缩。

答案 1 :(得分:0)

我认为你只收到一个文件?对于&#39; ftp&#39;要使用文件通配,你需要使用&#39; mput&#39;命令。将put $FILE替换为:

prompt
mput $FILE

您需要提示&#39;命令关闭交互性,并且&#39; mput&#39;将放置多个文件。

然而,&#39; ftp&#39;可能不是这项工作的最佳工具。我建议使用&rs; rsync&#39;。上述任务可以通过以下方式完成:

HOST='10.113.68.50'
USER='sms'
RSYNC_PASSWORD='Abc123451'
LOCALPATH='kmpy/unica/Campaign/partitions/partition1/CiktiDosyalari'
FILE=*.sms
DIR='SMS/'

rsync -avz $(LOCALPATH)/$(FILE) $(USER)@$(HOST):$(DIR)

&#39; rsync的&#39;只会传输文件中的更改并压缩传输。

编辑:通常&#rs; rsync&#39;使用&#s; ssh&#39;默认情况下进行身份验如果你想使用&#39; rsh&#39;方法(与&#39; ftp&#39;相同),您应该执行以下操作:

rsync -avz --rsh=rsh $(LOCALPATH)/$(FILE) $(USER)@$(HOST):$(DIR)