好的,所以我试图将一些录制文件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
答案 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)