sftp

         sftp(安全文件传输协议)与ftp 有着几乎一样的语法和功能。FTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式。它并不使用ftp守护进程(ftpd或wu-ftpd)来进行连接,而是有意义地增强系统的安全性。实际上,通过监视一些系统中的log文件,可以注意到很多攻击是针对于ftpd守护进程的。sftp避免了这些攻击从而可以停止在wu-ftpd上潜在的危险。SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作。使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

用法举例:

(1)      sftproot@10.48.30.192:/root/test.sh(直接将192上的文件复制到本地)

(2)      sftproot@10.48.30.192:/root  (直接连接到192的root目录下,这样就可以使用getput等命令了)

         sftp使用在数据连接上使用ssh2,所以文件的传输是尽可能地安全。使用sftp代替ftp两个主要的的原因是:

(1)      password从不用明文传输,防止sniffer(嗅探器)的攻击。

(2)      数据在传输时被加密,使用刺探和修改连接非常困难。

         使用sftp2是非常简单的。让我们假设你使用了你的帐户:myname通过sftp连按上了主机host1。可以使用命令:sftp myname@host1。当sftp2准备好了来接受连接时,它将显示一个状态提示符 sftp>。在sftp手册中有完整的用户可以使用的命令列表;其中有:

l  quit:从这个应用程序中退出。

l  cd directory:改变当前的远程工作目录。

l  lcd directory:改变当前的本地工作目录。

l  ls [ -r ] [ -l ] [ file ... ]:列出在远地服务器上的文件名。如果是目录,则列出目录的内容。当命令行中指定了-r,则递归地显示目录树。(默认情况下,子目录并不被访问)。当命令行中指定了-l,文件与目录的权限,属主,大小和修改时间被列出。当没有参数被指定,则.(当前目录)的内容被列出。普通情况下选项-r和-l是互相不兼容的。

l  lls [ -r ] [ -l ] [ file ... ]:与ls一样,但是是对于本地文件操作。

l  get [file ...]:从远程端传送指定的文件到本地端。目录内容被递归地复制。

l  put [ file ... ]:从本地端传送指定的文件到远地端。目录内容被递归地复制。

l  mkdir dir (rmdir dir):尝试建立或删除参数中指定的目录。

l  通配符对于ls,lls,get和put是支持的。格式在sshregex手册中有描述。

从sftp使用加密技术以来,一直有一个障碍:连接速度慢(有2-3倍),但是这一点对于非常好的安全性来讲只能放在一边了。在一个测试中,局域网上的sniffer可以在一个小时中捉住ftp连接上的4个password.。sftp的使用可以从网络上传送文件并且除去这些安全问题。

lftp

lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp非常像一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。

命令行语法

(1)    lftp [-d] [-e cmd] [-p port][-u user[:pass]] [site]

例子:



lftp ftp://userName:password@127.0.0.1



 

-e在选择后执行命令

-u [,] 使用指定的用户名/口令进行验证

-p 连接指定的端口

Site:主机名,URL 或书签的名字

(2)    lftp -f script_file

执行文件中的命令后退出

(3)    lftp -c commands

执行命令后退出

(4)    lftp –version

显示 lftp 版本后退出

(5)    lftp --help

显示帮助信息后退出     

         例子:

(1)      如果在命令行中输入的站点名称,lftp将直接登录站点,比如

lftp ftp://.............

(2)      如果在命令行不输入站点名称,则必须在进入到lftp界面后用open命令打开

Lftp

lftp :~> open ftp://...................

常用命令

l  下载单个文件和一组文件,断点续传用-c参数

lftp ................:/> get -c ls-lR.txt

lftp ...............:/> mget *.txt

l  镜像(反镜像即上传)一个目录,可以用多个线程并行镜像一个目录(--parallel=N)

lftp ................:/> mirror incoming local_name

lftp ................:/> mirror -R local_name

lftp ................:/> mirror --parallel=3 incominglocal_name

l  多线程下载,类似网络蚂蚁的功能;缺省是5个线程

lftp ................:/> pget -n 4 ls-lR.txt

l  后台任务管理

缺省情况下,按 Ctrl+z,正在执行的任务将转为后台执行,也可以在命令行末尾加&符号使任务在后台执行。用jobs命令可以查看所有的后台进程。用queue命令可以排队新的任务。如果退出lftp是还有任务在后台执行,lftp将转为后台执行。

l  其它用法

lftp支持类似bash的管道操作,例如用下面的命令可以将ftp服务器上的特定目录下(也可以是整个站点)所有文件的大小存到本地的文件ls.txt中

lftp ................:/> du incoming > ls.txt

相关文件

(1)      /etc/lftp.conf

全局配置文件,实际位置依赖系统配置文件目录,可能在/etc,也可能在/usr/local/etc

(2)      ~/.lftp/rc, ~/.lftprc

用户配置文件,将在/etc/lftp.conf之后执行,所以这里面的设置会覆盖/etc/lftp.conf中的设置。

(3)      lftp 缺省不会显示 ftp 服务器的欢迎信息和错误信息,这在很多时候不方便,因为你有可能想知道这个服务器到底是因为没开机连不上,还是连接数已满。如果是这样,你可以在 ~/.lftprc 里写入一行,debug 3,就可以看到出错信息了。更多的配置选项请查man手册或在lftp界面内用命令 set -a 获得。

(4)      ~/.lftp/log

当lftp转为后台非挂起模式执行时,输出将重定向到这里

(5)      ~/.lftp/bookmarks

这是lftp存储书签的地方,可以lftp查看bookmark命令

(6)      ~/.lftp/cwd_history

这个文件用来存储访问过的站点的工作目录

(7)      ~/.lftprc

在用lftp访问国内一些ftp服务器时,往往看到的中文是乱码。不用慌,这是由于服务器和本地编码不一致造成的。我们只要在主目录下新建一个文件~/.lftprc或者~/.lftp/rc。并在其中加入以下内容:debug 3set ftp:charset GBKset file:charset UTF-8#setftp:passtive-mode no#alias utf8 " set ftp:charset UTF-8"#alias gbk" set ftp:charset GBK"

登录ftp服务器:

         lftpftp://user:password@site:port

         lftpuser:password@site:port

         lftpsite -p port -u user,password

         lftpsite:port -u user,password

上面的几种方式都能正常工作,不过密码都是明文,这样好像不太安全哦。没关系,使用lftp user@site:port,系统会提示输入password,密码就回显为******了,不过每次都输入这么多,好麻烦哦。如果有类似leapftp的站点管理器就好了,其实lftp早就给我们想好了:这就是bookmark。后面我们将会看到。

         在终端运行如manlftp或登录ftp后输入help就可以看到命令列表,下面我们看一下lftp常用的命令:

(1)      ls:显示远端文件列表(!ls显示本地文件列表)。

(2)      cd:切换远端目录(lcd 切换本地目录)。

(3)      get:下载远端文件。

(4)      mget:下载远端文件(可以用通配符也就是 *)。

(5)      pget:使用多个线程来下载远端文件, 预设为五个。

(6)      mirror:下载/上传(mirror-R)/同步整个目录。

(7)      put:上传文件。

(8)      mput:上传多个文件(支持通配符)。

(9)      mv:移动远端文件(远端文件改名)。

(10)  rm:删除远端文件。

(11)  mrm:删除多个远端文件(支持通配符)。

(12)  mkdir:建立远端目录。

(13)  rmdir:删除远端目录。

(14)  pwd:显示目前远端所在目录(lpwd显示本地目录)。

(15)  du:计算远端目录的大小

(16)  !:执行本地 shell的命令(由于lftp 没有 lls, 故可用 !ls 来替代)

(17)  Lcd:切换本地目录

(18)  Lpwd:显示本地目录

(19)  Alias:定义别名

(20)  Bookmark:设定书签。

(21)  Exit:退出ftp

(22)  快捷书签:ftp中的bookmark命令,是将配置写到~/.lftp/bookmarks文件中;我们可以直接修改此文件,快速登陆ftp服务器。

wget

wget 是一个经由 GPL 许可的可从网络上自动获取文件的自由软件包。它是一个非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 协议,支持代理服务器以及断点续传功能。 wget 可实现递归下载,即可跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,实现远程网站的镜像。在递归下载时,wget 将页面中的超级链接转换成指向本地文件,方便离线浏览。由于非交互特性,wget 支持后台运行,用户在退出系统后,仍可继续运行。功能强大,设置方便简单。

基本语法: wget [options][URL-list]

         Options:

                  

         -r    递归下载服务器上所有的目录和文件。由 -l选项来指定递归深度。

         -b   后台下载

         -m  制作站点镜像

         -c    指定断点续传功能。该功能要求服务器支持断点续传。

         -I    指定下载目录列表,可实现批量下载

         -A/-R       指定接受/拒绝下载列表,实现选择性地下载

         --proxy=on/off        指定是否利用代理服务器进行下载

         -t,--tries=NUMBER         最大尝试链接次数 (0 表示无限制,默认为 20 次 )

         -nc,--no-clobber     不覆盖已存在的文件

         -N,--timestamping          只下载比本地新的文件

         -nd--no-directories         不进行目录结构创建

         -x,--force-directories      强制创建目录结构

         -nH,--no-host-directories       不继承主机目录结构

         -P,--directory-prefix=PREFIX 设置目录前缀

例子:递归下载 http://www.ibm.com.cn 站点的信息。下载所有显示完整网页所以需要的文件,如图片等。在下载不进行上层目录搜索并将绝对链接转换为相对链接。

   wget -r -p -np -k http://www.ibm.com.cn

    将在本地硬盘建立http://www.ibm.com.cn 的镜像,镜像文件存入当前目录下一个名为 www.ibm.com.cn 的子目录中(也可以使用 -nH 参数指定不建立该子目录,而直接在当前目录下建立镜像的目录结构),递归深度为 4,重试次数为无穷(若连接出现问题,wget 将永远重试下去,直至任务完成)

   wget -m -l4 -t0 http://www.ibm.com.c

    使用代理进行下载,并实现断点续传。代理可以在环境变量 PROXY 或 wgetrc 文件中设定。 -c 选项要求服务支持断点续传。

   wget -Y on -c http://www.ibm.com.cn