rsync
  rsync是linux系统下的数据镜像备份工具。支持远程同步,本地复制,或者与其他SSH、rsync主机同步。
  包括本地推到远程,远程拉到本地两种同步方式,也可以实现本地不同路径下文件的同步.

优点:
  1)、可以镜像保存整个目录树和文件系统。保存源目录整个目录树和文件系统
  2)、备份迅速,使用同步算法,只比较变化,支持增量备份
  3)、与scp相比,rsync传输速度远在scp之上。

缺点:
  1)、同步数据,需要扫描所有文件进行对比,才进行差量传输。如果文件数量达到百万甚至千万级,扫描文件对比文件将非常耗时,降低了rsync效率。
  2)、rsync不能实时地区监测、同步数据。虽然可以通过守护进程方式触发同步,但两次动作间有时间差,导致数据不一致,无法应对出现故障时完全恢复数据。

rsync 常用参数
  -a :归档模式,递归的方式传输文件,并保持文件的属性
  -l :保留软链接
  -R :保留相对路径
  -H :保留硬链接  
  -p ,-o,-g,-A:分别保留权限,属主,属组,acl等,但如果加了-a,这些就都包括了
  -P:显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
  -n --dry-run :仅测试传输,而不实际传输。常和"-vvvv"配合使用来查看rsync是如何工作的。
  -t --times   :保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新检查出mtime不同从而导致增量传输无效。
  -z :传输时进行压缩提高效率。
  --exclude   :指定排除规则来排除不需要传输的文件。
  --delete    :以SRC为主,对DEST进行同步。多则删之,少则补之。注意"--delete"是在接收端执行的,所以它是在exclude/include规则生效之后才执行的。
  --password-file :daemon模式时的密码文件,可以从中读取密码实现非交互式。注意,这不是远程shell认证的密码,而是rsync模块认证的密码。
  --remove-source-files:要求删除源端已经成功传输的文件。
  -b --backup  :对目标上已存在的文件做一个备份,备份的文件名后默认使用"~"做后缀。
  --backup-dir :指定备份文件的保存路径。不指定时默认和待备份文件保存在同一目录下。
  -v :显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
  -e :指定所要使用的远程shell程序,默认为ssh。

1. 普通应用:
# rsync /etc/fstab /tmp            # 在本地同步
# rsync -r /etc 172.16.10.5:/tmp   # 将本地/etc目录拷贝到远程主机的/tmp下,以保证远程/tmp目录和本地/etc保持同步[可以配置ssh秘钥认证]
# rsync -r 192.16.10.5:/etc /tmp   # 将远程主机的/etc目录拷贝到本地/tmp下,以保证本地/tmp目录和远程/etc保持同步
# rsync /etc/                 # 列出本地/etc/目录下的文件列表
# rsync 192.16.10.5:/tmp/     # 列出远程主机上/tmp/目录下的文件列表
# rsync -az -e 'ssh -p 43378' /data/svn/ root@192.168.1.254:/data/backup   #默认ssh端口22,如果改成43378,那么需要这样写
root@192.168.1.254's password:           # 可以配置ssh秘钥认证
# rsync -aHAX --delete /test/ /test1/    #如果源目录有文件被删除了,那同步的目录也删除

使用rsync一定要注意的一点是,源路径如果是一个目录的话,带上尾随斜线和不带尾随斜线是不一样的,不带尾随斜线表示的是整个目录包括目录本身,带上尾随斜线表示的是目录中的文件,不包括目录本身。例如:
第一个命令会在/tmp目录下创建etc目录,而第二个命令不会在/tmp目录下创建etc目录,源路径/etc/中的所有文件都直接放在/tmp目录下。
# rsync -a /etc /tmp
# rsync -a /etc/ /tmp

如果要拷贝的源路径较长,但只想在目标主机上保留一部分目录结构,例如要拷贝/var/log/anaconda/*到/tmp下,但只想在/tmp下保留从log开始的目录,如何操作?使用一个点代表相对路径的起始位置即可,也就是将长目录进行划分。这样,从点开始的目录都是相对路径,其相对根目录为目标路径。所以对于下面的示例,将在目标上创建/tmp/log/anaconda/*。
# rsync -R -r /var/./log/anaconda /tmp

对远程目录下已存在文件做一个备份。这样在目标目录下,已存在的文件就被做一个备份,备份文件默认使用"~"做后缀,可以使用"--suffix"指定备份后缀。
# rsync -R -r --backup /var/./log/anaconda /tmp
# ll /tmp/log/anaconda/
total 3112
-rw------- 1 root root 6668 Jul 14 12:45 anaconda.log
-rw------- 1 root root 6668 Jul 14 11:44 anaconda.log~

可以使用"--backup-dir"指定备份文件保存路径,但要求保存路径必须存在。
指定备份路径后,默认将不会加备份后缀,除非使用"--suffix"显式指定后缀,如"--suffix=~"。
# mkdir /tmp/log_back
# rsync -R -r --backup --backup-dir=/tmp/log_back /var/./log/anaconda /tmp
# tree /tmp/log_back/
/tmp/log_back/
└── log
       └── anaconda
              ├── anaconda.log
              ├── ifcfg.log

--exclude排除规则,排除那些不需要传输的文件。
一个--exclude只能指定一条规则,要指定多条排除规则,需要使用多个--exclude选项,或者将排除规则写入到文件中,然后使用--exclude-from选项读取该规则文件
例如:
# rsync -av –exclude=upload /home/mysql/backup /home/mysql/backup2/       # 只能排除upload文件/目录。
# rsync -av --exclude-from=/root/exclude.list /home/mysql/backup /home/mysql/backup2/   #排除多个文件

注意exclude.list里面填写要排除的文件/目录,一行一个,直接写文件名即可。这里,可以把/home/mysql/backup看成根目录,所以如果要排除a,b.1,b.2,tmp/g,
那么exclude.list里就应该写
a
b.*
tmp/g

.[a-z]*    # 不备份以点开头的隐藏文件

而不是填写以下完整url。不然这样还是会同步a,b.1,b.2,tmp/g
/home/mysql/backup/a
/home/mysql/backup/b.*
/home/mysql/backup/tmp/g

使用rsync 同步数据一些常用参数和示例的更多相关文章

  1. Windows 之间用rsync同步数据(cwRsyncServer配置)

    rsync是一款优秀的数据同步软件,在跨服务器,跨机房,跨国备份服务器的首选工具,下面就来介绍下如何配置安装cwRsyncServer很大多数软件一样是B/C架构,cwRsyncServer是rsyn ...

  2. Linux运维: Rsync同步数据(ubuntu16.04+windows10)

    rsync同步数据 -环境:Linux (ubuntu16.04) + windows10 Linux: 安装 sudo apt-get install rsync rsync --version 查 ...

  3. scp和rsync的区别和常用参数

    一.scp 命令 1.scp 是 secure copy 的缩写,用于远程的文件的复制. 2.参数: -r: 递归复制整个目录. 3.实例: scp /home/space/music/1.mp3 u ...

  4. rsync同步数据---把左边的文件全部拷贝到右边

    背景,配置好了ssh 使用rsa pulbic key的方式登陆远程服务器.//ssh-keygen -t rsa -b 2048 -f andy-rsync-key -P '' https://he ...

  5. rsync同步数据

    1. rsync 命令格式rsync [OPTION]... SRC DESTrsync [OPTION]... SRC [USER@]HOST:DESTrsync [OPTION]... [USER ...

  6. 定时执行rsync同步数据以及mysql备份

    需求:把机器A中的附件.图片等,备份到备份机B中.将数据库进行备份 附件备份 在A中,启动rsync服务,编辑/etc/xinetd.d/rsync文件,将其中的disable=yes改为disabl ...

  7. 使用rsync同步数据(by quqi99)

    作者:张华  发表于:2015-12-28版权声明:能够随意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 急需使 ...

  8. 配置rsync 同步数据 rpm包安装rsync及配置

    [root@Hammer home]# rpm -qa |grep rsync #检查系统是否安装了rsync软件包rsync-2.6.8-3.1[root@Hammer CentOS]# rpm - ...

  9. 运维工作中常用到的几个rsync同步命令

    作为一个运维工程师,经常可能会面对几十台.几百台甚至上千台服务器,除了批量操作外,环境同步.数据同步也是必不可少的技能.说到“同步”,不得不提的利器就是rsync. 下面结合本人近几年运维工作中对这一 ...

随机推荐

  1. Unity3D的断点调试功能

    断点调试功能可谓是程序员必备的功能了.Unity3D支持编写js和c#脚本,但很多人可能不知道,其实Unity3D也能对程序进行断点调 试的.不过这个断点调试功能只限于使用Unity3D自带的Mono ...

  2. spring的IOC 的底层实现原理

    IOC:Inversion of Control  控制反转. 指的是 对象的创建权反转(交给)给 Spring. 作用是实现了程序的解耦合.

  3. scala变量类型和性质

    最高的父类型为Any,最低类型为Nothing Any is the supertype of all types, also called the top type. It defines cert ...

  4. SAP work process Memory allocate

    Memory allocation sequence to dialog work processes in SAP What is the memory allocation sequence to ...

  5. java 可重入锁ReentrantLock的介绍

    一个小例子帮助理解(我们常用的synchronized也是可重入锁) 话说从前有一个村子,在这个村子中有一口水井,家家户户都需要到这口井里打水喝.由于井水有限,大家只能依次打水.为了实现家家有水喝,户 ...

  6. StorageLevel

    val NONE = new StorageLevel(false, false, false, false)  val DISK_ONLY = new StorageLevel(true, fals ...

  7. cookie、localStorage、sessionStorage和会话控制机制

    简介 cookie cookie的内容主要包括:名字Name.值Value.域Domain.路径Path.过期时间Expires/Max-Age.大小Size.HTTP.Secure.SameSite ...

  8. jquery 属性-记住

    $("").attr(); $("").removeAttr(); $("").prop(); $("").remove ...

  9. 阅读程序 回答问题——FindTheNumber

    阅读程序 回答问题——FindTheNumber 阅读下面程序,请回答如下问题:问题1:这个程序要找的是符合什么条件的数?问题2:这样的数存在么?符合这一条件的最小的数是什么?问题3:在电脑上运行这一 ...

  10. Maven上传构建到私服

    通过Maven发布构建到NEXUS私服上发布构建到私服 --- mvn deployPOM中通过distributionManagement分发本地构建到NEXUS私服上第一步,配置distribut ...