linux中文件传输的方式有ftp,scp,rsync,rz,sz等,但各个工具的功能又有所区别:
FTP : FTP是文件服务器,可实现文件的上传下载,存储等功能(这里不做举例说明)。
scp: scp能够将不同主机的文件进行相互传输,使用简单方便。
rz : 用于linux与windows之间的文件上传
sz : 用于linux与windows之间的文件下载
rsync : rsync是文件同步工具,结合inotify可以实现文件的同步,备份功能。
1 scp方式
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。scp在夸机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了ssh免密码登录,那在使用scp的时候密码都不用输入。
命令格式:
scp [参数] [本地主机文件路径] [远程主机路径]
参数:
-r 递归复制整个目录
-p 保留原文件的修改时间,访问时间和访问权限。 (建议使用,传输时保留属性时间信息,否则会导致时间发生改变无法进行增量传输)
-P port 注意是大写的P, port是指定数据传输用到的端口号
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
1)将本地A主机文件复制到B主机:(A的IP:192.168.214.190 B的IP:192.168.214.187)
scp -p ./files/yum.log 192.168.214.187:/tmp/demo/
2)将远程主机B复制到本地A:
scp -p 192.168.214.187:/tmp/demo/f3.log /tmp/files/
3) 复制目录
scp -rp ./files/ 192.168.214.187:/tmp/demo
2 rz sz (lrzsz)方式
rz sz指令可以实现linux和windows之间的文件传输,但要求在windows客户端要安装Xshell或SecureCRT远程连接工具。rz指令和sz指令是一对上传与下载的指令。它们的软件包名为lrzsz。
3 rsync方式
rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。rsync可以实现scp的远程拷贝,cp的本地拷贝、rm删除和"ls -l"显示文件列表等功能。
rsync 的传输模式有:
1. 本地shell模式
本地shell模式用于复制本机的目录到另一个目录,和cp一样
2. 远程shell模式
远程shell模式可以把本机的数据复制到远程的机器上,和 scp一样
3. 服务器模式
服务器模式是使用最多的方式,其他3个模式都可以用其他指令替代,远程自动同步也是使用服务器模式
基本使用方法
1. 复制/etc/fstab 到/tmp下
rsync -a /etc/fstab /tmp/ #-a:保留原文件属性
2. 复制/etc目录到/tmp下
rsync -ar /etc /tmp/
3. 远程文件传输 –shell方式
rsync -arvz /tmp/fdd root@192.168.214.187:/tmp/ # -z :压缩传输
##远程传输会将文件的属组信息改为ssh登录使用的用户属组属主
4. 开启加密传输,加强传输安全性
rsync -arvze ssh /tmp/nginx root@192.168.214.187:/tmp/
5