博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux命令——rsync
阅读量:6156 次
发布时间:2019-06-21

本文共 5915 字,大约阅读时间需要 19 分钟。

参考: 

简介

rsync是远程(或本地)复制和同步文件最常用的命令。 借助rsync命令,你可以跨目录,跨磁盘和跨网络远程与本地数据进行复制和同步。举例来说:在两台Linux主机之间进行数据备份和镜像。本文介绍在Linux主机上进行远程和本地传输文件的常见用法,不需要root账户也可以允许rsync。

rsync特性

  1. 高效地复制同步数据到对端,或者对端到本地
  2. 支持复制链接、设备、属主、属组、权限
  3. 比scp(Secure Copy)更快。rsync使用远程更新协议(  ),这允许仅仅传输两组文件之间的差异。对于首次传输,它将文件或目录的全部内容从源复制到目标,但是从下次起,它仅将变化部分复制到目标。
  4. Rsync消耗较少的带宽,因为它使用压缩和解压缩方法,同时发送和接收数据两端。HTTP压缩技术

基本语法

rsync options source destination

-v : 详细模式输出

-r : 递归拷贝数据,但是传输数据时不保留时间戳和权限

-a : 归档模式, 归档模式总是递归拷贝,而且保留符号链接、权限、属主、属组时间戳

-z : 压缩传输

-h : human-readable

--progress: 显示传输过程

--exclude=PATTERN 指定排除传输的文件模式

--include=PATTERN 指定需要传输的文件模式

--delete 同步时,删除那些DST中有,而SRC没有的文件

--max-size:限定传输文件大小的上限

--dry-run:显示那些文件将被传输,并不会实际传输

--bwlimit:限制传输带宽

-W:拷贝文件,不进行增量检测

使用场景

本地拷贝同步文件、目录

同步一个文件从本地一个目录到另一个目录,如果目标目录不纯在,会自动创建

[root@tecmint]# rsync -zvh backup.tar /tmp/backups/created directory /tmp/backupsbackup.tarsent 14.71M bytes  received 31 bytes  3.27M bytes/sectotal size is 16.18M  speedup is 1.10
View Code

再演示同步目录

[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/sending incremental file listrpmpkgs/rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpmrpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpmrpmpkgs/nagios-3.5.0.tar.gzrpmpkgs/nagios-plugins-1.4.16.tar.gzsent 4.99M bytes  received 92 bytes  3.33M bytes/sectotal size is 4.99M  speedup is 1.00
View Code

远程拷贝同步文件、目录

本地到远程

[root@tecmint]$ rsync -avz rpmpkgs/ root@192.168.0.101:/home/root@192.168.0.101's password:sending incremental file list./httpd-2.2.3-82.el5.centos.i386.rpmmod_ssl-2.2.3-82.el5.centos.i386.rpmnagios-3.5.0.tar.gznagios-plugins-1.4.16.tar.gzsent 4993369 bytes  received 91 bytes  399476.80 bytes/sectotal size is 4991313  speedup is 1.00
View Code

远程到本地

[root@tecmint]# rsync -avzh root@192.168.0.100:/home/tarunika/rpmpkgs /tmp/myrpmsroot@192.168.0.100's password:receiving incremental file listcreated directory /tmp/myrpmsrpmpkgs/rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpmrpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpmrpmpkgs/nagios-3.5.0.tar.gzrpmpkgs/nagios-plugins-1.4.16.tar.gzsent 91 bytes  received 4.99M bytes  322.16K bytes/sectotal size is 4.99M  speedup is 1.00
View Code

通过ssh使用rsync

SSH(Secure Shell)以加密方式传输数据时,接获数据并破解很难。rsync同ssh一起使用可以增强传输按权限,注意可能需要用户密码。

从本地到远程

[root@tecmint]# rsync -avzhe ssh backup.tar root@192.168.0.100:/backups/root@192.168.0.100's password:sending incremental file listbackup.tarsent 14.71M bytes  received 31 bytes  1.28M bytes/sectotal size is 16.18M  speedup is 1.10
View Code

从远程到本地

[root@tecmint]# rsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/root@192.168.0.100's password:receiving incremental file listinstall.logsent 30 bytes  received 8.12K bytes  1.48K bytes/sectotal size is 30.74K  speedup is 3.77
View Code

传输数据时显示传输过程

使用--progress参数

[root@tecmint]# rsync -avzhe ssh --progress /home/rpmpkgs root@192.168.0.100:/root/rpmpkgsroot@192.168.0.100's password:sending incremental file listcreated directory /root/rpmpkgsrpmpkgs/rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm           1.02M 100%        2.72MB/s        0:00:00 (xfer#1, to-check=3/5)rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm          99.04K 100%  241.19kB/s        0:00:00 (xfer#2, to-check=2/5)rpmpkgs/nagios-3.5.0.tar.gz           1.79M 100%        1.56MB/s        0:00:01 (xfer#3, to-check=1/5)rpmpkgs/nagios-plugins-1.4.16.tar.gz           2.09M 100%        1.47MB/s        0:00:01 (xfer#4, to-check=0/5)sent 4.99M bytes  received 92 bytes  475.56K bytes/sectotal size is 4.99M  speedup is 1.00
View Code

使用--exclude和--include

传输R开头的文件、目录,派出其他情况的文件、目录

[root@tecmint]# rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.101:/var/lib/rpm/ /root/rpmroot@192.168.0.101's password:receiving incremental file listcreated directory /root/rpm./RequirenameRequireversionsent 67 bytes  received 167289 bytes  7438.04 bytes/sectotal size is 434176  speedup is 2.59
View Code

使用--delete

--delete用于同步时,删除那些DST中有,而SRC没有的文件

再target主机创建test.txt

[root@tecmint]# touch test.txt[root@tecmint]# rsync -avz --delete root@192.168.0.100:/var/lib/rpm/ .Password:receiving file list ... donedeleting test.txt./sent 26 bytes  received 390 bytes  48.94 bytes/sectotal size is 45305958  speedup is 108908.55
View Code

使用--max-size

--max-size用于限制传输时文件的大小,只有≤max-size的文件才会被传输

[root@tecmint]# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ root@192.168.0.100:/root/tmprpmroot@192.168.0.100's password:sending incremental file listcreated directory /root/tmprpm./ConflictnameGroupInstalltidNameProvideversionPubkeysRequireversionSha1headerSigmd5Triggername__db.001sent 189.79K bytes  received 224 bytes  13.10K bytes/sectotal size is 38.08M  speedup is 200.43
View Code

传输完毕后自动删除源文件、目录

假设你有一个主Web Server和一个数据备份Sever,你创建了每日备份任务并与备份服务器同步备份,你不希望在Web Server中保留该本地备份副本。

那么,你是否会等待传输完成然后手动删除这些本地备份文件? 当然不。 可以使用--remove-source-files选项完成此自动删除。

[root@tecmint]# rsync --remove-source-files -zvh backup.tar /tmp/backups/backup.tarsent 14.71M bytes  received 31 bytes  4.20M bytes/sectotal size is 16.18M  speedup is 1.10[root@tecmint]# ll backup.tarls: backup.tar: No such file or directory
View Code

使用--dry-run

如果你对rsync不熟悉,贸然使用rsync可能会搞乱对端文件、目录。借助--dry-run可以让你知道会传输些什么东西,但实际上并没有传输任何东西。如果输出结果与你的预期吻合,可以去掉--dry-run,进行实际的传输工作。

root@tecmint]# rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/backup.tarsent 35 bytes  received 15 bytes  100.00 bytes/sectotal size is 16.18M  speedup is 323584.00 (DRY RUN)
View Code

设置同步时带宽

使用--bwlimit可以设置同步时网络带宽上限

[root@tecmint]# rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  root@192.168.0.100:/root/tmprpm/root@192.168.0.100's password:sending incremental file listsent 324 bytes  received 12 bytes  61.09 bytes/sectotal size is 38.08M  speedup is 113347.05
View Code

同步整个文件

rsync由于采用远程更新协议(  ),默认是同步变化的字节或块。使用-W可以取消这种机制,整个文件同步

[root@tecmint]# rsync -zvhW backup.tar /tmp/backups/backup.tarbackup.tarsent 14.71M bytes  received 31 bytes  3.27M bytes/sectotal size is 16.18M  speedup is 1.10
View Code

 

转载于:https://www.cnblogs.com/kelamoyujuzhen/p/10089454.html

你可能感兴趣的文章
HTTP缓存应用
查看>>
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
分布式事务最终一致性常用方案
查看>>
Exchange 2013 PowerShell配置文件
查看>>
JavaAPI详解系列(1):String类(1)
查看>>
HTML条件注释判断IE<!--[if IE]><!--[if lt IE 9]>
查看>>
发布和逸出-构造过程中使this引用逸出
查看>>
使用SanLock建立简单的HA服务
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>