《Linux上的常用文件传输方式介绍与比较【精华】》由会员分享,可在线阅读,更多相关《Linux上的常用文件传输方式介绍与比较【精华】(14页珍藏版)》请在金锄头文库上搜索。
1、正文何兴建文章:9 篇大洋币:24 枚时间:2011-08-08 引用ftpftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输。FTP 协议允许数据在不同文件系统的主机之间传输。尽管这个协议在传输数据上提供了高适应性,但是它并没有尝试去保留一个特定文件系统上的文件属性(例如一个文件的保护模式或者修改次数)。而且 FTP 协议很少对一个文件系统的整体结构作假定,也不提供这样的功能,比如递归的拷贝子目录。在使用 ftp 命令时,需要注意 FTP 协议的这些特性。当需要保留文件属性或者需要递归的拷贝子目录时
2、,可以使用 rcp/scp 等命令。基本语法ftp 命令的 一般格式如下:$ ftp 主机名 /IP其中“主机名 /IP ”是所要连接的远程机的主机名或 IP 地址。在命令行中,主机名属于可选项,如果指定主机名,ftp 将试图与远程机的 ftp 服务程序进行连接;如果没有指定主机名,ftp 将给出提示符,等待用户输入命令:$ ftp ftp 此时在 ftp 提示符后面输入 open 子命令加主机名或 IP 地址,将试图连接指定的主机。不管使用哪一种方法,如果连接成功,需要在远程机上登录。用户如果在远程机上有帐号,就可以通过 ftp 使用这一帐号并需要提供口令。在远程机上的用户帐号的读写权限决定
3、该用户在远程机上能下载什么文件和能将上载文件放到哪个目录中。在远程站点上登录成功后,在“ ftp ”提示符下可以自由使用 ftp 提供的各种子命令,最常用的子命令如下表所示。表 1. ftp 子命令命令 描述ls 列出远程机的当前目录cd 在远程机上改变工作目录lcd 在本地机上改变工作目录ascii 设置文件传输方式为 ASCII 模式binary 设置文件传输方式为二进制模式close 终止当前的 ftp 会话get (mget) 从远程机传送指定文件到本地机put (mput) 从本地机传送指定文件到远程机open 连接远程 ftp 站点quit 断开与远程机的连接并退出 ftp? 显示
4、本地帮助信息! 转到 Shell 中prompt 1 关闭交互模式使用实例:利用编写 ftp 脚本可以自动完成文件传输任务。具体方法是使用 ftp 命令的 -in 选项,并重定向 ftp 命令的输入。现在我们来编写一个利用 ftp 登录到远程服务器,并以 bin 的文件格式,在 /home 目录下,下 载 file1.log 以及 file2.sh 至本机 /opt/ibm/,并从本地 /opt 目录 上传文件 file3.jave 至远程服务器 /home 的自动化脚本。ftp -ni 将多个本地文件复制到远程登录目录的子目录中rcp 将多个文件从多个远程源复制到使用不同用户名的远程目标中r
5、cp scpscp 命令在网络上的主机之间拷贝文件,它 是安全拷贝(secure copy)的缩写。 scp 命令使用 ssh 来传输数据,并使用与 ssh 相同的认证模式,提供同样的安全保障。 scp 命令的用法和 rcp 命令非常类似,这里就不做过多介绍了。一般推荐使用 scp 命令,因为它比 rcp 更安全。我们可以通过配置 ssh,使得在两台机器间拷贝文件时不需要每次都输入用户名和密码。基本语法scp -1246BCpqrv -c cipher -F ssh_config -i identity_file -l limit -o ssh_option -P port -S progra
6、m userhost1:file1 . userhost2:file2使用 scp 命令,需要输入密码,如 果不想每次都输入,可 参考下面的方法。首先生成密钥对$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Created directory /home/user/.ssh. Enter passphrase (empty for no passphrase): Enter same passphra
7、se again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 10:66:da:38:85:8a:8c:bd:db:9c:6e:eb:ee:bd:7d:15 usersomehost在这里,我们指定了生成 rsa 类型的密钥。在提示密钥的保存路径和密码时,可以直接回车使用默认路径和空密码。这样,生成的公共密钥保存在 $HOME/.ssh/id_
8、rsa.pub,私有密钥保存在 $HOME/.ssh/id_rsa 。然后把这个密钥对中的公共密钥的内容复制到要访问的机器上的 $HOME/.ssh/authorized_keys 文件中。这样,下次再访问那台机器时,就不用输入密码了。使用实例:Copy 本地文件 /etc/eva.log, 到远程机器 sysB, 用户 user 的家目录下scp /etc/eva.log usersysB:/home/usercopy 远程机器 sysB 上的文件 /home/uesr/eva.log, 到本地的 /etc 目录下 , 并保持文件属性不变scp -p usersysB:/home/uesr/
9、eva.log /etccopy sysB 上的目录 /home/user, 到本地 /home/user/tmp, scp -r usersysB:/home/user /home/user/tmpwgetwget 是一个经由 GPL 许可的可从网络上自动获取文件的自由软件包。它是一个非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 协议,支持代理服务器以及断点续传功能。 wget 可实现递归下载,即可跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,实现远程网站的镜像。在递归下载时,wget 将页面中的超级链接转换成指向本地文件,方便离
10、线浏览。由于非交互特性,wget 支持后台运行,用户在退出系统后,仍可继续运行。功能强大,设置方便简单。基本语法wget options URL-listwget 有很多不同的参数以用于远程站点信息的获取,常用参数如下,更多参数请参照 wget 帮助手册 http:/www.gnu.org/software/wget/manual/wget.html表 3. wget 工具常用参数选项 描述-r 递归下载服务器上所有的目录和文件。由 -l 选项来指定递归深度。-b 后台下载-m 制作站点镜像-c 指定断点续传功能。该功能要求服务器支持断点续传。-I 指定下载目录列表,可实现批量下载-A/-R
11、指定接受拒绝下载列表,实现选择性地下载-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:/ 站点的信息
12、。下载所有 显示完整网页所以需要的文件,如图片等。在下载不进行上层目录搜索并将绝对链接转换为相对链接。wget -r -p -np -k http:/将在本地硬盘建立 http:/ 的镜像,镜像文件存入当前目 录下一个名为 的子目录中(也可以使用 -nH 参数指定不建立该子目录,而直接在当前目录下建立镜像的目录结构),递归深度为 4,重试次数为无穷(若连接出现问题,wget 将永远重试下去,直至任务完成)wget -m -l4 -t0 http:/.c使用代理进行下载,并实现断点续传。代理可以在环境变量 PROXY 或 wgetrc 文件中设定。 -c 选项要求服务支持断点续传。wget -
13、Y on -c http:/curl另一个可以用来进行文件传输的工具是 curl,它是对 libcurl 库的一个命令行工具包装。libcurl 库中提供了相应功能的 API,可以在程序中调用。对于 libcurl 库的使用方法介绍超出了本文的讨论范围。 curl 使用 URL 的语法来传输文件,它支持 FTP, FTPS, HTTP, HTTPS, TFTP, SFTP, TELNET 等多种协议。 curl 功能强大,它提供了包括代理支持,用户认证,FTP 上载,HTTP post,SSL 连接,文件续传等许多特性。基本语法curl options 其中下载参数大约有 80 多个,curl
14、 的各个功能完全依靠这些参数来完成。下面举例说明 curl 的一些基本用法。使用实例:获取 GNU 的主页curl http:/www.gnu.org获取 GNU 的 FTP 服务器上根目录下的 README 文件curl ftp:/ftp.gnu.org/README从一个字典中获取 curl 的定义curl dict:/dict.org/m:curl如果需要指定用户名和密码的话,可以在 url 中指定,或者使用 -u 参数curl ftp:/name:passwdmachine.domain:port/full/path/to/filecurl -u name:passwd ftp:/ma
15、chine.domain:port/full/path/to/filecurl 会将从指定 url 处获取的内容打印到标准输出上。如果需要保存在本地文件中,可以使用 -o,或使用 -O 参数指定使用远程主机上的文件名(如果 url 中没有给出文件名的部分,则此操作将会失败)curl ? o gnu.html http:/www.gnu.orgcurl ? O http:/www.gnu.org/index.html使用 -x 选项来使用代理进行连接curl -x my-proxy:port ftp:/ curl 的 -T 选项来进行上载curl -T - ftp:/ FTP 服务器上的 upfile 文件中。也可以指定上载一个本地文件curl -T localfile -a ftp:/ -a 参数表示以添加方式将 localfile 中的内容附加到 upfile 的末尾。总的来说,curl 适合用来进行自动的文件传输或操作序列,它是一个很好的模拟用户在网页浏览器上的行为的工具。尤其当需要在程序中调用时,libcurl 是个很好的选择。rsyncrsync 是一款高效的远程数据备份和镜象工具,可快速地同步多台主机间的文件