将文件从FTP服务器传输到本地unix服务器

时间:2009-08-25 12:19:33

标签: shell unix ftp

我必须传输名称由两个变量X,Y组成的文件,它们在ftp服务器的ABC目录下到我的本地unix目录XYZ。在传输文件后,我必须转到本地目录路径,我应该解压缩(输入文件是压缩文件)。我必须使用用户名和密码连接到FTP。将文件复制到本地服务器时,我也必须使用我的用户名和密码。

这是我目前的尝试。它会起作用吗?我该如何改进呢?

ftp -n hostname <<EOF
user username pwd
cd ABC
get ls *X*.tar | ls *Y*.tar username1@pwd1 : XYZ
EOF
bye
for next in `ls *.tar`
do
tar -zvxf $next
done

3 个答案:

答案 0 :(得分:1)

我建议您查看ftp命令行ftp-tool和脚本的手册。

替代方法:使用wget将ftp文件下载到本地计算机,然后scp到目标计算机,我想对ssh使用公钥认证,scp不需要密码,那么它应该结束像这样简单。

wget --ftp-user=$USERNAME --ftp-password=$PASSWORD ftp://$HOSTNAME/ABC/$Y.tar
scp $Y.tar $SCPUSER@$SCPHOST/targetpath/$X.tar

答案 1 :(得分:1)

请尝试以下代码。希望这会对你有所帮助。

#! /bin/bash

cd local_path
USER='username'
PASSWD='password'
file_name='files'

for HOST in ftpserver
do
echo $HOST
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
bin
prompt

cd "remote_path"
lcd "local_path"

mget $file_name.gz*

quit
END_SCRIPT
done

#extract file
mkdir -p ../archive/$DATE
for HOST in ftpserver
do
        gunzip $file_name.gz
done

答案 2 :(得分:-1)

您可以使用wget将文件从FTP服务器下载到unix系统

cd YOUR_DIRECTORY

wget --user=USERNAME --password='PASSWORD' HOST_NAME/REMOTE_PATH/FILE_NAME.EXTENSION