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