从 Unix 中的 FTP 从远程服务器获取最新文件
Get the latest file from a remote server from an FTP in Unix
我需要在 Unix 中从远程主机获取文件。我正在使用 ftp
命令。问题是我需要那个位置的最新文件。我是这样做的:
dir=/home/user/nyfolders
latest_file=$(ls *abc.123.* | tail -1)
ftp -nv <<EOF
open $hostname
user $username $password
binary
cd $dir
get $latest_file
bye
EOF
但是我得到这个错误:
(remote-file) usage: get remote-file [ local-file ]
我认为我尝试从 ftp
命令中获取文件的方式不正确,有人可以帮助我吗?
您不能在 ftp
命令脚本中使用 shell 功能,例如别名、管道、变量等。
ftp
不支持使用任何语法的此类高级功能。
不过,您可以分两步完成(以利用步骤之间的 shell 功能)。
首先获取远程目录列表到本地文件(/tmp/listing.txt
):
ftp -nv <<EOF
open $hostname
user $username $password
cd $dir
nlist *abc.123.* /tmp/listing.txt
bye
EOF
查找最新文件:
latest_file=`tail -1 /tmp/listing.txt`
并下载:
ftp -nv <<EOF
open $hostname
user $username $password
binary
cd $dir
get $latest_file
bye
EOF
我需要在 Unix 中从远程主机获取文件。我正在使用 ftp
命令。问题是我需要那个位置的最新文件。我是这样做的:
dir=/home/user/nyfolders
latest_file=$(ls *abc.123.* | tail -1)
ftp -nv <<EOF
open $hostname
user $username $password
binary
cd $dir
get $latest_file
bye
EOF
但是我得到这个错误:
(remote-file) usage: get remote-file [ local-file ]
我认为我尝试从 ftp
命令中获取文件的方式不正确,有人可以帮助我吗?
您不能在 ftp
命令脚本中使用 shell 功能,例如别名、管道、变量等。
ftp
不支持使用任何语法的此类高级功能。
不过,您可以分两步完成(以利用步骤之间的 shell 功能)。
首先获取远程目录列表到本地文件(/tmp/listing.txt
):
ftp -nv <<EOF
open $hostname
user $username $password
cd $dir
nlist *abc.123.* /tmp/listing.txt
bye
EOF
查找最新文件:
latest_file=`tail -1 /tmp/listing.txt`
并下载:
ftp -nv <<EOF
open $hostname
user $username $password
binary
cd $dir
get $latest_file
bye
EOF