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

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

问题描述:

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

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

ftp -n hostname <<EOF 
user username pwd 
cd ABC 
get ls *X*.tar | ls *Y*.tar [email protected] : XYZ 
EOF 
bye 
for next in `ls *.tar` 
do 
tar -zvxf $next 
done 
+1

你不能与SCP,而在FTP工作。 2009-08-25 12:33:32

+0

你不能使用比那些ftp,没有scp,没有cp的其他命令。 get完全没有命令,它是wget,但需要调用而不是ftp命令。 – 2009-08-25 13:41:24

请尝试下面的代码。希望这可以帮助你。

#! /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 
+0

但是 1.我对本地和ftp服务器有不同的用户名和密码。 2.我必须选择文件的名称应该包含X和Y – musicking123 2009-08-25 12:43:26

+0

你应该调查一下自己,如果你有不同的用户名为ftp和ssh,只需添加另一个变量。 – 2009-08-25 12:48:36

+0

@ musicking123:1)你说你有差异用户,并通过本地和FTP。在我的代码中,你必须把ftp用户和通过,不需要本地用户/通行证。 2)你可以在mget中使用* X * .tar和* Y * .tar。 – Space 2009-08-25 12:59:12

我建议你只是考虑的ftp FTP命令行工具和脚本的手册。

替代方案:用wget到FTP文件下载到本地计算机上,然后使用scp到目标机器,我想使用SSH公钥认证,即SCP不需要密码,那么就应该结束了简单的像这个。

wget --ftp-user=$USERNAME --ftp-password=$PASSWORD ftp://$HOSTNAME/ABC/$Y.tar 
scp $Y.tar [email protected]$SCPHOST/targetpath/$X.tar 
+0

你可以看到我的代码,并告诉我它会工作吗? plz – musicking123 2009-08-25 12:32:22

+0

好吧,我想不是,你尝试发送你的scp命令的ftp服务器。 – 2009-08-25 12:40:45

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

cd YOUR_DIRECTORY 

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