Archive for March 11, 2016

Linux挂载ftp服务器

Linux挂载ftp服务器需要用到一个名为fuse-curlftpfs的包正常情况下无法通过yum的方式获取此包因此需要先安装DAG repository

Centos5 64位 wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
Centos5 32位 wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
Centos6 64位 wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Centos6 32位 wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
然后是安装下载的rpm包

rpm -ivh rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
然后就可以通过yum的方式安装fuse-curlftpfs了

yum install fuse-curlftpfs -y
在Centos6上执行此命令可能会遇到 Requires: libcurl.so.3 的错误解决方法编辑 /etc/yum.repos.d/rpmforge.repo 文件 [rpmforge-extras] 项打开再执行 yum clean all 即可

接下来就可以挂载ftp了

写法1curlftpfs ftp://用户名:密码@ftp地址 挂载点 -o codepage=utf8
写法2curlftpfs ftp://ftp地址 挂载点 -o user=用户名:密码
Bodite pozorni:如果提示“fuse: failed to open /dev/fuse: Operation not permitted”说明你是在使用OpenVZ技术的Linux VPS的因为OpenVZ技术的缺陷性(所有小鸡共用母鸡的内核)导致无法使用curlftpfs命令请在Xen或者vmware技术中使用

开机自动挂载

echo “curlftpfs#用户名:密码@ftp地址 挂载点 fuse rw,allow_other,uid=0,gid=0 0 0” >> /etc/fstab

Komentarji

linux中下载ftp文件的几个方法

ena、最简单的方法: wget
下面的命令用来下载ftp服务器上指定目录的所有文件
[html] view plain copy print?
wget ftp://IP:PORT/*ftp-user=xxxftp-password=xxx -r
-r 参数表示递归下载
可以使用directory-prefix=/mypath/ 指定下载后存储路径;-nH选项可以不在本地创建服务器上的目录结构
另一个令人迷惑的选项是delete-after它并不是用来删除服务器上的已下载文件而是用来删除本机的
wget之所以是wget而不是wput它只能进行下载操作不支持对ftp服务器上的任何写操作比如删除
可以删除文件的方法:lftp
项目需求是下载ftp服务器上的指定文件夹取内的所有文件并于下载后删除wget不能满足要求于是改写出下面的脚本
mget命令可以下载多个文件,-E参数表示下载后删除服务器上的文件
[python] view plain copy print?
#!/bin/bash
#指定ftp服务器的ip
serverip=1.2.3.4
#指定ftp服务器的ftp用户
serveruser=root
#指定ftp服务器的ftp用户密码
serverpass=123456
#指定client主机本地下载文件存放的目录
localdir=./data
logfile=../log/ftp_download.log
#指定server主机的ftp目录
remotedir=./
#指定server主机的主机名
host=test_host
#切换到本地下载文件存放的目录
cd $localdir
#输入开始备份的信息
echo “Starting FTP Download on ” $host
#连接ftp服务器
/usr/bin/lftp << EOF open $serverip user $serveruser $serverpass #切换到server主机的ftp目录 echo "cd " $remotedir cd $remotedir #列出ftp服务器ftp目录中文件列表并存放到client中的$localdir中 ls . >> $logfile
#下载ftp服务器ftp目录中的所有文件
mget -E *.txt
#退出ftp服务器
bye
其他方法
系统中的ftp命令和强大的curl
curl支持FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET 和TFTP方便在自己的程序中调用同时支持cookie代理密码和证书验证非常强大

Komentarji