ftp最新文件从远程到本地

时间:2017-03-21 17:19:21

标签: shell unix scripting ftp

我已经编写了一个shell脚本来将远程文件ftp到本地服务器。但它给了我错误。 脚本:

#!/bin/sh
cd /home/local-path
HOST='hostname'
USER='username'
PASSWD='password'
ftp -n -v $HOST << EOT
binary
user $USER $PASSWD
cd /home/server-path
theFile=$(ls -t | head -n 1)
get $theFile
bye
EOT

运行时我收到以下错误:

Connected to server.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
331 Please specify the password.
230 Login successful.
250 Directory successfully changed.
?Invalid command
(remote-file) (local-file)
221 Goodbye.

如果我硬编码完整的文件路径而不是 cd / home / server-path &amp; theFile = $(ls -t | head -n 1),它运行正常。问题是我不知道确切的远程文件名,因为有多个文件,我只需要ftp最新的。

请您回顾并告诉我我在这里犯了什么错误,谢谢。

1 个答案:

答案 0 :(得分:-1)

我使用的FTP只支持一些命令。所以基本上你可以使用get命令将文件从FTP放到你的目录中。最好将远程目录中的所有文件放到本地,然后使用本地目录中的ls -t | head -n1来获取最新文件。

以下是代码:

!/bin/bash
path=/some/path

export path
echo   "-----------Downloading the file from SFTP Location----------------"

cd "$path"
sftp -b /dev/stdin user@host <<CMDS
cd [remote-directory path]
pwd
get allfilenames local-directory
bye
CMDS
cd "$path"
ls -t | head -n1