【问题标题】:FTP Shell Script Not WorkingFTP Shell 脚本不工作
【发布时间】:2014-08-07 14:43:57
【问题描述】:

好的,所以我每天晚上都在尝试 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

【问题讨论】:

  • 如果显示的 Ip 不是您编造的,为了您的安全,我会更改它。
  • @ben:地址是private class A IP,不会通过互联网路由

标签: linux shell ftp


【解决方案1】:

我认为您只收到一个文件?要让“ftp”使用文件通配符,您需要使用“mput”命令。将put $FILE 替换为:

prompt
mput $FILE

你需要'prompt'命令来关闭交互,'mput'会放多个文件。

但是,“ftp”可能不是完成这项工作的最佳工具。我建议使用“rsync”。上面的任务可以通过:

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)

'rsync' 只会传输文件中的更改并压缩传输。

编辑:通常“rsync”默认使用“ssh”进行身份验证。如果您想使用“rsh”方法(与“ftp”相同),您应该执行以下操作:

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

【讨论】:

    【解决方案2】:

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

    【讨论】: