将文件从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
请尝试下面的代码。希望这可以帮助你。
#! /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
但是 1.我对本地和ftp服务器有不同的用户名和密码。 2.我必须选择文件的名称应该包含X和Y – musicking123 2009-08-25 12:43:26
你应该调查一下自己,如果你有不同的用户名为ftp和ssh,只需添加另一个变量。 – 2009-08-25 12:48:36
@ 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
你可以看到我的代码,并告诉我它会工作吗? plz – musicking123 2009-08-25 12:32:22
好吧,我想不是,你尝试发送你的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
你不能与SCP,而在FTP工作。 2009-08-25 12:33:32
你不能使用比那些ftp,没有scp,没有cp的其他命令。 get完全没有命令,它是wget,但需要调用而不是ftp命令。 – 2009-08-25 13:41:24