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. Elasticsearch5.5.2安装和启动遇到哪些问题

    最近学习Elasticsearch,顺便记录下操作步骤,供日后参考 安装环境 CentOS release 6.6 1.因Elasticsearch是基于java写的,所以它的运行环境中需要java的 ...

  2. 阿里云 putty链接服务器出现 server refused our key

    阿里云 putty链接服务器出现 server refused our key 创建了密钥对绑定实例,puttygen生成ppk,putty配置参数,连接,一步一步来的,结果出现 server ref ...

  3. 1.理解Numpy、pandas

    之前一直做得只是采集数据,而没有再做后期对数据的处理分析工作,自己也是有意愿去往这些方向学习的,最近就在慢慢的接触. 首先简单理解一下numpy和pandas:一.NumPy:1.NumPy是高性能计 ...

  4. python学习笔记_week9

    一.paramiko模块 SSHClient,用于连接远程服务器并执行基本命令 基于用户名密码连接: ssh执行命令:stdin,stdout,sterr:标准输入.输出.错误 import para ...

  5. Swoole 异步mysql使用

    <?php class mysql { private $param; public $db; public function __construct() { $this->db = ne ...

  6. 机器学习进阶-图像形态学操作-腐蚀操作 1.cv2.erode(进行腐蚀操作)

    1.cv2.erode(src, kernel, iteration) 参数说明:src表示的是输入图片,kernel表示的是方框的大小,iteration表示迭代的次数 腐蚀操作原理:存在一个ker ...

  7. AIR程序调用本地默认应用程序打开本地文件

    当我用下面语句的时候,可以成功打开桌面文件夹下面的文件: var file:File = File.desktopDirectory.resolvePath("test.jpg") ...

  8. UI5-学习篇-8-本地SAP WEB IDE开发

    1.本地SAP WEB IDE下载 UI5-学习篇-3-Local SAP WEB IDE下载 2.启动Orion服务 解压SAP WEB IDE文件后,双击Orion应用程序启动服务,如下图: 服务 ...

  9. SRM-相关资料路径

    SRM采购管理平台功能介绍 https://wenku.baidu.com/view/b05cff5930b765ce0508763231126edb6f1a763c.html https://wen ...

  10. Linux删除ORACLE数据库用户失败提示ORA-01940解决方法

    操作环境 SuSE11+Oracle11gR2 问题现象 删除ORACLE数据库用户失败,提示ORA-01940: cannot drop a user that is currently conne ...