标签:rsync
rsync介绍
Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。
后端的存储数据库都需要实时同步,而rsync用在存储的实时同步。
inotify不会对老的数据进行增量,只有新的数据才会增量,这样就不存在比对的问题
生产场景集群架构服务器备份方案cron+rsync
rsync结合inotify的功能做实时数据同步rsync+inotify或sersync
Rsync三种同步方式
Local:
Access via remote shell:
Access via rsync daemon:
rsync常用参数说明:
网址:https://www.samba.org/ftp/rsync/rsync.html
-v,--verbose详细模式输出,传输时的进度等信息
-z,--compress传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩
-a,--archive归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgD1
-r,--recursive对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r
-t,--times保持文件时间信息
-o,--owner保持文件属主信息
-p,--perms保持文件权限
-g,--group保持文件属组信息
-P,--progress显示同步的过程及传输时的进度等信息
-r,--recursive对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r
-e,--rsh=COMMAND使用的信道协议,指定替代rsh的shell程序。例如:ssh
--exclude=PATTERN指定排除不需要传输的文件模式
-avz相当于vzrtopgDl
生产参数:-avz或者用-vzrtopg
实例:
用rsync备份目录
[root@cat ~]# cp /etc/hosts /tmp/ #用CP命令备份 cp: overwrite `/tmp/hosts‘? y [root@cat ~]# rsync /etc/hosts /tmp/ [root@cat ~]# rm -f /tmp/hosts [root@cat ~]# rsync /etc/hosts /tmp/ #用rsync不加参数备份 [root@cat ~]# ll /etc/hosts -rw-r--r--. 1 root root 158 Jan 12 2010 /etc/hosts [root@cat ~]# ll /tmp/hosts #查看TMP目录下已有备份过来的文件 -rw-r--r-- 1 root root 158 Jul 1 09:11 /tmp/hosts
rsync最常见的命令组合是-avz
[root@cat ~]# ll /tmp/hosts ls: cannot access /tmp/hosts: No such file or directory [root@cat ~]# rsync -avz /etc/hosts /tmp/ #用参数-avz复制文件夹 sending incremental file list hosts #首次复制,提示hosts拷贝 sent 124 bytes received 31 bytes 310.00 bytes/sec total size is 158 speedup is 1.02 [root@cat ~]# ll /tmp/hosts -rw-r--r-- 1 root root 158 Jan 12 2010 /tmp/hosts [root@cat ~]# rsync -avz /etc/hosts /tmp/ #再次拷贝,已提示不再拷贝 sending incremental file list sent 30 bytes received 12 bytes 84.00 bytes/sec total size is 158 speedup is 3.76
删除目录及下面的文件,创建一个空目录。理论是空目录有什么,目标目录就有什么,这样就是空目录是空,执行后,目录目录也就空了
[root@cat ~]# ll /data/ #准备删除/data下的文件 total 8 -rw-r--r-- 1 old111 old111 0 Jun 15 16:36 23.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:30 333 -rw-r--r-- 1 old111 old111 0 Jun 15 16:28 333t.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:26 333.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:37 33.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:39 55.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:39 88.txt -rw-r--r-- 1 old111 old111 0 Jun 15 15:09 aaa.txt -rw-r--r-- 1 old111 old111 0 Jun 14 16:31 aa.txt drwxr-xr-x 3 old111 old111 4096 May 19 16:55 appdatas drwxr-xr-x 3 old111 old111 4096 May 19 16:55 applogs -rw-r--r-- 1 old111 old111 0 Jun 15 16:40 eter.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:46 we.txt [root@cat ~]# mkdir /null #创建一个/null的文件夹 [root@cat ~]# rsync -r --delete /null /data/ #-r是递归--delete是删除 [root@cat ~]# ll /data/ #查看还在,是因为/null后面还要加(/)不加/它认为是null这个目录名及目录里面的内容。加/后,只表示目录里面的内容,不表示目录名了 total 12 -rw-r--r-- 1 old111 old111 0 Jun 15 16:36rs 23.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:30 333 -rw-r--r-- 1 old111 old111 0 Jun 15 16:28 333t.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:26 333.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:37 33.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:39 55.txt -rw-r--r-- 1 old111 old111 0 Jun 15 16:39 88.txt -rw-r--r-- 1 old111 old111 0 Jun 15 15:09 aaa.txt -rw-r--r-- 1 old111 old111 0 Jun 14 16:31 aa.txt drwxr-xr-x 3 old111 old111 4096 May 19 16:55 appdatas drwxr-xr-x 3 old111 old111 4096 May 19 16:55 applogs -rw-r--r-- 1 old111 old111 0 Jun 15 16:40 eter.txt drwxr-xr-x 2 root root 4096 Jul 1 09:25 null -rw-r--r-- 1 old111 old111 0 Jun 15 16:46 we.txt [root@cat ~]# rsync -r --delete /null/ /data/ #使用/null/再次删除,这次已经删除成功 [root@cat ~]# ll /data/ total 0 [root@cat ~]# mkdir /null/ddd #这个目录有什么,执行后,目标目录也有什么 [root@cat ~]# rsync -r --delete /null/ /data/ [root@cat ~]# ll /data/ #data下已有ddd文件夹(注:如果用rsync会干掉目标目录里的文件,cp不会) total 4 drwxr-xr-x 2 root root 4096 Jul 1 09:31 ddd
学习自:
老男孩Linux
本文出自 “写给自己的博客” 博客,请务必保留此出处http://zhaodongwei.blog.51cto.com/4233742/1826697
标签:rsync
原文地址:http://zhaodongwei.blog.51cto.com/4233742/1826697