Linux - sh 脚本 - 从 FTP 下载多个文件
Linux - sh script - download multiple files from FTP
我需要可以通过我的 sh 代码从 ftp 下载文件的脚本
我已经将 expect
与 ftp 一起使用,但是如果我在代码中执行 for 循环,我会得到
wrong # args: should be "for start test next command"
while executing "for v in "a b c""
我的代码
/usr/bin/expect << EXCEPT_SCRIPT
set timeout 1
spawn ftp -n ${HOST}
send "user ${USER} ${PASSWD}\n"
expect "ftp>"
send "bin\n"
expect "ftp>"
send "dir\n"
for v in "${files_to_download[@]}"
do
ftp_file="${v}.bz2"
#download file
echo ${ftp_file}
#put code to dl here
done
expect "ftp>"
send "bye\n"
EXCEPT_SCRIPT
wget
expect
可能很难使用,所以我更愿意使用 GNU Wget 作为替代。只要您在任何参数中没有任何空格,以下内容就应该有效。
for v in "${files_to_download[@]}"
do
ftp_file="${v}.bz2"
wget --user=${USER} --password=${PASSWD} ${HOST}/${ftp_file}
done
仅使用一个 FTP 连接请求多个资源
如果这是一个问题,您可以通过使用 FTP globbing(通配符)来避免与服务器建立多个 FTP 连接,例如
wget --user=${USER} --password=${PASSWD} "${HOST}/*.bz2"
确保 URL 被引用,这样 shell 就不会扩展通配符。
您还可以使用 -nc, --no-clobber
选项来避免重新下载已经下载过的文件。
另一方面,请求多个资源 (wget url2 url2 ...
) 会导致多次 FTP 登录。
注意:我通过在自己的FTP服务器上用tcpdump
.
监控端口21检查了以上两个操作
ncftp
您可能也对 ncftp 感兴趣。虽然我已经很多年没有使用它了,但我发现它——以及它的 ncftpget
和 ncftpput
实用程序——比标准的 UNIX ftp
程序更容易用于命令行脚本编写。
我需要可以通过我的 sh 代码从 ftp 下载文件的脚本
我已经将 expect
与 ftp 一起使用,但是如果我在代码中执行 for 循环,我会得到
wrong # args: should be "for start test next command" while executing "for v in "a b c""
我的代码
/usr/bin/expect << EXCEPT_SCRIPT
set timeout 1
spawn ftp -n ${HOST}
send "user ${USER} ${PASSWD}\n"
expect "ftp>"
send "bin\n"
expect "ftp>"
send "dir\n"
for v in "${files_to_download[@]}"
do
ftp_file="${v}.bz2"
#download file
echo ${ftp_file}
#put code to dl here
done
expect "ftp>"
send "bye\n"
EXCEPT_SCRIPT
wget
expect
可能很难使用,所以我更愿意使用 GNU Wget 作为替代。只要您在任何参数中没有任何空格,以下内容就应该有效。
for v in "${files_to_download[@]}"
do
ftp_file="${v}.bz2"
wget --user=${USER} --password=${PASSWD} ${HOST}/${ftp_file}
done
仅使用一个 FTP 连接请求多个资源
如果这是一个问题,您可以通过使用 FTP globbing(通配符)来避免与服务器建立多个 FTP 连接,例如
wget --user=${USER} --password=${PASSWD} "${HOST}/*.bz2"
确保 URL 被引用,这样 shell 就不会扩展通配符。
您还可以使用 -nc, --no-clobber
选项来避免重新下载已经下载过的文件。
另一方面,请求多个资源 (wget url2 url2 ...
) 会导致多次 FTP 登录。
注意:我通过在自己的FTP服务器上用tcpdump
.
ncftp
您可能也对 ncftp 感兴趣。虽然我已经很多年没有使用它了,但我发现它——以及它的 ncftpget
和 ncftpput
实用程序——比标准的 UNIX ftp
程序更容易用于命令行脚本编写。