linux下不同服务器间数据传输2012-03-0911:43:32分类:LINUX因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结。主要是rcp,scp,rsync,ftp,sftp,lftp,wget,curl。rcprcp不是一种安全的的传输文件的方式,rcp通过rsh(rsh见下面)来执行远程命令,要使用rcp必须经过一些配置,现在rcp已经被scp取代了,常用scp来进行文件传输。要使用rcp,需要具备以下条件:(1)如果系统中有/etc/hosts文件,应确保该文件包含要与之进行通信的远程主机信息:internet_addressofficial_namealias。例如:1.186.10.***blade1.ibm.com.cnblade(2).rhosts文件:.rhosts文件位于远程系统的根目录下,其中包含本地系统的名称和本地登录名。例如,远程系统的.rhosts文件中的项可能是:blade1root;其中,blade1是本地系统的名称,root是本地登录名。这样,blade1上的root即可在包含.rhosts文件的远程系统中来回复制文件。配置过程:(1)在双方root用户根目录下建立.rhosts文件,并将双方的hostname加进去.在此之前应在双方的/etc/hosts文件中加入对方的IP和hostname(2)把rsh服务启动起来,redhat默认是不启动的。方法:用执行ntsysv命令,在rsh选项前用空格键选中,确定退出。然后执行:servicexinetdrestart即可。如果没有rsh,请见下面rsh部分(3)到/etc/pam.d/目录下,把rsh文件中的authrequired/lib/security/pam_securetty.so一行用“#”注释掉即可。(只有注释掉这一行,才能用root用户登录)命令使用:rcp[options][[user@]host1:]file1...[[user@]host2:]file2options:-r递归地把源目录中的所有内容拷贝到目的目录中。-p试图保留源文件的修改时间和模式,忽略umask。rsh(remoteshell,它不够安全):rsh使用条件同rcp,rsh配置过程(以root为例)(1)在服务器上运行/urs/bin/ntsysv选中rexec,rlogin,rsh三项服务。(2)运行#/sbin/servicexinetdrestart启动该三项服务。(3)运行echorexec/etc/securetty;echorlogin/etc/securetty;echorsh/etc/securetty(4)在服务器上运行echo你的ip地址root/root/.rhosts或者echo你的主机名root/root/.rhosts且确保在服务器上的/etc/hosts中有主机名和ip地址的映射关系(5)到/etc/pam.d/目录下,把rexec,rlongin,rsh文件中的authrequired/lib/security/pam_securetty.so一行用“#”注释掉即可。(只有注释掉这一行,才能用root用户登录)(6)rsh命令用法:rshremote-sytem-neameLinux-command,例如:rshblade1ls/home/rootscpscp命令是SSH中最方便有用的命令了,scp就是securecopy,是用来进行远程文件拷贝的。数据传输使用ssh,并且和ssh使用相同的认证方式,提供相同的安全保证。与rcp不同的是,scp在需要进行验证时会要求你输入密码或口令。scp[options][本地用户名@IP地址:]file1[远程用户名@IP地址:]file2options:-v用来显示进度,可以用来查看连接,认证,或是配置错误。-C使能压缩选项。-c选择使用那个加密算法(具体对应到ssh的-ccipher-spec,这个参数值会被传给ssh,可选择值3des,blowfish,des),使用blowfish会快很多,可以参看manssh中的-ccipher-spec-P选择端口-r递归拷贝整个目录-l限制使用带宽,Kbit/s-o指定传给ssh的一些参数值,比如Compression=yes-p保留文件的修改时间等信息。rsyncrsync是rcp的替代品之一,rsync是一款高效的远程数据备份和镜象工具,可快速地同步多台主机间的文件,其具有如下特性:支持链接、所有者、组信息以及权限信息的拷贝;通过远程shell(ssh,rsh)进行传输;无须特殊权限即可安装使用;流水线式文件传输模式,文件传输效率高;支持匿名操作;需要提及的是rsync以其优越的性能优势区别于其它几种Linux文件传输方法,其同步文件的速度相当快,这主要归功于rsync所使用的传输算法。简而言之rsync算法能在相当短的时间内计算出需要备份的数据,只对源文件与目标文件的不同之处进行传输,从而降低网络中传输的数据量,以此达到快速备份镜像的目的。下面通过一典型应用场景来描述rsync算法的基本原理:主机A与主机B均有对同一文件的拷贝,用户对主机A上的拷贝进行更新,主机B通过rsync算法对更新后的文件进行同步。以下是该算法的实现步骤:(1)主机B将原始拷贝划分成大小为N的不重合的若干块(文件末尾部分分块大小可能不足N),并对这些数据块进行两种不同方式的校验:32位的滚动弱校验、128位的MD4强校验。弱校验较之强校验计算速度快。(2)主机B将每个数据块的弱校验、强校验结果发送给主机A。(3)主机A对更新后的文件拷贝中的每个长度为N的数据块进行弱校验并与从B接收到的弱校验值进行匹配,若相同再进行强校验匹配。由于弱校验的滚动特性可以快速地筛选出需要进行同步的数据块。该算法的运算量主要集中在主机A上。通过上述计算,主机A将文件的不同部分发送给B,B接收到两个拷贝之间的不同之处,从而同步得到更新后的文件。通过如上方式,rsync避免了对相同数据的传输,减少了网络带宽的浪费。在时间上整个过程中需一个往返,从某种程度上也保证了rsync的优越性能。Rsync可以通过两种方式来连接远程服务器,一种是通过类shell命令的方式,一种是通过rsyncdaemon的方式,rsyncdaemon需要进行安装和配置,具体如下:可从官方网站上下载安装rsync的最新版本。使用时需将rsync分别安装于服务端和客户端,服务端和客户端使用同一个rsync软件包来实现远程镜像和定期同步更新。需要说明的是一个rsync服务端可同时备份多个客户端的数据;多个服务端备份一个客户端的数据。rsync默认端口为873,服务器在该端口接收客户的匿名或者认证方式的备份请求。rsync服务端在使用之前需要进行必要的配置,其配置文件为/etc/rsyncd.conf,进行认证、访问、日志记录等控制。配置文件包括全局参数、模块参数的设置。rsyncd.conf文件中[module]之前的所有参数为全局参数,也可以在全局参数部分定义模块参数,在这种情况下该参数的值就是所有模块的默认值。全局参数设置程序使用的端口号,指定消息文件、日志文件pid文件以及发送日志消息的级别。模块参数主要定义服务端哪个目录需要被同步。用户可根据不同的需要指定多个模块,每个模块对应需要备份的一个目录树,即若有N个需要备份的目录树,则需要N个模块与之对应。模块中可以定义许多参数,常见参数如下。Comment:块信息描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。Path:指定供备份的目录路径,必须指定该参数。maxconnections:指定最大并发连接数以保护服务器,超过限制的连接请求将被告知随后再试。默认值为0,即没有限制。logfile:指定日志文件readonly:设定是否允许客户上载文件。若为true任何上载请求均会失败,若为false且客户端拥有服务器目录读写权限则可以上载。默认值为true。writeonly:设定是否允许客户下载文件。若为true任何下载请求均会失败,默认值为false。List:设定当客户请求可以使用的模块列表时,是否列出该模块。若为false,则创建隐藏的模块。默认值为true。fakesuper:允许文件享有所有权限,而无需后台服务以root权限进行操作。Filter:设置过滤列表以决定哪些文件可由客户端访问。hostsallow:指定允许客户连接的IP地址。可以为单个IP地址或整个网段。多个IP或网段需要以空格隔开。默认是允许所有主机连接。dontcompress:指定不进行压缩处理即可传输的文件,默认值是*.gz*.tgz*.zip*.z*.rpm*.deb*.iso*.bz2*.tbzpre-xferexec,post-xferexec:设置可在文件传输前/后执行的命令。若在文件传输前执行的命令失败,则取消本次传输操作。需要注意的是服务器端启动:/usr/bin/rsync--daemon--config=/etc/rsyncd/rsyncd.conf连接远程服务器的两种方式的基本语法(1)通过远程shell方式:rsync[OPTION][USER@]HOST:SRCDEST:用远程shell(如ssh,rsh)实现将远程机器的内容拷贝到本地机器。SRC地址路径中以单个冒号:进行分隔。rsync[OPTION]SRC[USER@]HOST:DEST:使用远程shell(如rsh、ssh)实现本地机器的内容拷贝到远程机器。DEST地址路径中以单个冒号:进行分隔。(2)通过rsyncdaemon方式:rsync[OPTION][USER@]HOST::SRCDEST或rsync[OPTION]rsync://[USER@]HOST[:PORT]/SRC[DEST]:从远程rsync服务器中拷贝文件到本地机。SRC地址路径中以双冒号::进行分隔。rsync[OPTION]SRC[USER@]HOST::DEST或rsync[OPTION]SRCrsync://[USER@]HOST[:PORT]/DEST:从本地机器拷贝文件到远程rsync服务器中。DEST地址路径中以双冒号::进行分隔。如果rsync命令中只指定SRC参数而不指定DEST参数,则意为显示源文件列表而非进行同步拷贝。Options:-v,--verbose详细模式输出-q,--quiet精简输出模式-c,--checksum打开校验开关,强制对文件传输进行校验-a,--archive归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD-r,--recursive对子目录以递归模式处理-R,--relative使用相对路径信息-b,--backup创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。--backup-dir将备份文件(如~filename)存放在在目录下。-suffix=SUFFIX定义备份文件前缀-u,--update仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)-l,--links保留软链结-L,--copy-links想对待常规文件一样处理软链结--copy-unsafe-links仅仅拷贝指向SRC路径目录树以外的链结--safe-links忽略指向SRC路径目录树以外的链结-H,--hard-links保留硬链结-p,--perms保持文件权限-o,--owner保持文件属主信息-g,--group保持文件属组信息-D,--devices保持设备文件信息-t,--times保持文件时间信息-S,--sparse对稀疏文件进行特