在linux系统下数据备份的工具。Rsync不仅可以远程同步数据(类似于scp [1]),当然还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉。如果你的linux没有rsync命令请使用 yum install -y rsync 安装。

下面阿铭先举一个例子,然后再详细讲解rsync的用法:

[root@localhost ~]# rsync -av 123.txt /tmp/

sending incremental file list 123.txt sent 71 bytes  received 31 bytes  204.00 bytes/sec total size is 0  speedup is 0.00

上面例子表示把当前目录下的123.txt同步到/tmp/目录下,也可以更改目标文件的名字,

rsync -av 123.txt/tmp/234.txt

如果是远程拷贝的话就是这样的形式了: IP:path (如:10.0.2.34:/root/)

[root@localhost ~]# rsync -av 123.txt 192.168.0.101:/data/The authenticity of host '192.168.0.101 (192.168.0.101)' can't be established.RSA key fingerprint is b4:54:5f:73:ec:c2:60:5f:c3:79:c0:f9:51:e9:ac:e5.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.0.101' (RSA) to the list of known hosts.root@192.168.0.101's password:

首次连接会提示是否要继续连接,我们输入yes继续,当建立连接后,需要输入密码。如果手动去执行这些操作还好,但若是写在脚本中怎么办?这就涉及到添加信任关系了,该部分内容稍后会详细介绍。

  1. rsync的命令格式

rsync [OPTION]... SRC DEST

rsync [OPTION]... SRC [USER@]HOST:DEST

rsync [OPTION]... [USER@]HOST:SRC DEST

rsync [OPTION]... [USER@]HOST::SRC DEST

rsync [OPTION]... SRC [USER@]HOST::DEST

在一开始举的两个例子,第一个例子即为第一种格式,第二个例子即为第二种格式,但不同的是,并没有加user@host 如果不加默认指的是root. 第三种格式是从远程目录同步数据到本地。第四种以及第五种格式使用了两个冒号,这种方式和前面的方式的不同在于验证方式不同,稍后详细介绍。

2. rsync常用选项

-a 归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD, -a选项后面可以跟一个 --no-OPTION 这个表示关闭-rlptgoD中的某一个例如 -a--no-l 等同于-rptgoD

-r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项

-v 打印一些信息出来,比如速率,文件数量等

-l 保留软链结

-L 向对待常规文件一样处理软链结,如果是SRC中有软连接文件,则加上该选项后将会把软连接指向的目标文件拷贝到DST

-p 保持文件权限

-o 保持文件属主信息

-g 保持文件属组信息

-D 保持设备文件信息

-t 保持文件时间信息

--delete 删除那些DST中SRC没有的文件

--exclude=PATTERN 指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如.txt)

--progress 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等

-u 加上这个选项后将会把DST中比SRC还新的文件排除掉,不会覆盖

常用的选项: (-a -v --delete --exclude)

实验:

1) 建立目录以及文件:

[root@localhost ~]# mkdir rsync

[root@localhost ~]# cd rsync

[root@localhost rsync]# mkdir test1

[root@localhost rsync]# cd test1

[root@localhost test1]# touch 1 2 3

[root@localhost test1]# ln -s /root/123.txt ./123.txt

[root@localhost test1]# ls -l

总用量 0

-rw-r--r-- 1 root root  0  6月 10 12:58 1l

rwxrwxrwx 1 root root 13  6月 10 12:59 123.txt -> /root/123.txt

-rw-r--r-- 1 root root  0  6月 10 12:58 2

-rw-r--r-- 1 root root  0  6月 10 12:58 3

[root@localhost test1]# cd ..

建立这些文件的目的就是为做试验做一些准备工作。

2)使用 -a 选项

[root@localhost rsync]# rsync -a test1 test2

[root@localhost rsync]# ls test2

test1

[root@localhost rsync]# ls test2/test1/

1 123.txt  2  3

这里有一个问题,就是本来想把test1目录直接拷贝成test2目录,可结果rsync却新建了test2目录然后把test1放到test2当中。为了避免这样的情况发生,可以这样做:

[root@localhost rsync]# rm -rf test2

[root@localhost rsync]# rsync -a test1/ test2/

[root@localhost rsync]# ls -l test2/

总用量 0-rw-r--r-- 1 root root  0  6月 10 12:58 1l

rwxrwxrwx 1 root root 13  6月 10 12:59 123.txt -> /root/123.txt

-rw-r--r-- 1 root root  0  6月 10 12:58 2

-rw-r--r-- 1 root root  0  6月 10 12:58 3

加一个斜杠就好了,在使用rsync备份目录时要养成加斜杠的习惯。

在上面讲了-a选项等同于-rlptgoD,而且 -a 还可以和 --no-OPTIN 一并使用。下面看看-l选项的作用:

[root@localhost rsync]# rsync -av --no-l test1/ test2/

sending incremental file listcreated directory test2./1skipping non-regular file "123.txt"23sent 200 bytes  received 72 bytes  544.00 bytes/sectotal size is 13  speedup is 0.05

使用-v选项看来就是方便呀,上例告诉我们跳过了非普通文件123.txt,其实123.txt是一个软连接文件,如果不使用-l选项则不理会软连接文件的。虽然加上-l选项会把软连接文件给拷贝过去,但是软连接的目标文件却没有拷贝过去,有时候咱们指向拷贝软连接文件所指向的目标文件,那这时候该怎么办呢?

3)使用-L选项

[root@localhost rsync]# rsync -avL test1/ test2/sending incremental file listcreated directory test2./1123.txt23sent 231 bytes  received 91 bytes  644.00 bytes/sectotal size is 0  speedup is 0.00

[root@localhost rsync]# ls -l test2/

总用量 0

-rw-r--r-- 1 root root 0  6月 10 12:58 1

-rw-r--r-- 1 root root 0  6月 10 12:39 123.txt

-rw-r--r-- 1 root root 0  6月 10 12:58 2

-rw-r--r-- 1 root root 0  6月 10 12:58 3

加上 -L 选项就可以把SRC中软连接的目标文件给拷贝到DST.

4) 使用-u选项

首先查看一下test1/1 和test2/1的创建时间(肯定是一样的),然后使用touch修改一下test2/1的创建时间(此时test2/1要比test1/1的创建时间晚了一些),如果不加-u选项的话,会把test2/1的创建时间变成和test1/1的创建时间一样。这样讲也许你会迷糊,不妨看一看:

[root@localhost rsync]# ll test1/1 test2/1

-rw-r--r-- 1 root root 0  6月 10 12:58 test1/1

-rw-r--r-- 1 root root 0  6月 10 12:58 test2/1

两者之间的创建时间是一样的,下面修改test2/1 的创建时间,然后不加-u同步:

[root@localhost rsync]# touch test2/1

[root@localhost rsync]# ll test2/1

-rw-r--r-- 1 root root 0  6月 10 13:20 test2/1

[root@localhost rsync]# rsync -a test1/1 test2/

[root@localhost rsync]# ll test2/1

-rw-r--r-- 1 root root 0  6月 10 12:58 test2/1

test2/1 的创建时间又变成和test1/1的创建时间一样了。下面加上 -u 再看看结果是怎么样的:

[root@localhost rsync]# touch test2/1

[root@localhost rsync]# ll test2/1

-rw-r--r-- 1 root root 0  6月 10 13:31 test2/1

[root@localhost rsync]# rsync -avu test1/ test2/

sending incremental file list./123.txt -> /root/123.txt

sent 100 bytes  received 18 bytes  236.00 bytes/sectotal size is 13  speedup is 0.11

[root@localhost rsync]# ll test2/1

-rw-r--r-- 1 root root 0  6月 10 13:31 test2/1

[root@localhost rsync]# ll test1/1

-rw-r--r-- 1 root root 0  6月 10 12:58 test1/1

加上-u 选项后,不会再把 test1/1 同步为 test2/1 了,现在你明白 -u 选项的妙用了吧。

5)使用 --delete 选项

首先删除test1/123.txt:

[root@localhost rsync]# rm -f test1/123.txt

[root@localhost rsync]# ls test1/1  2  3

然后把test1/ 目录 同步到 test2/ 目录下:

[root@localhost rsync]# rsync -av test1/ test2/

sending incremental file list./1sent 94 bytes

received 34 bytes  256.00 bytes/sectotal

size is 0  speedup is 0.00

[root@localhost rsync]# ls test2/1

123.txt  2  3

test2/目录并没有删除掉123.txt, 下面加上 --delete 选项:

[root@localhost rsync]# rsync -av --delete test1/ test2/

sending incremental file listdeleting 123.txtsent 52 bytes  received 12 bytes  128.00 bytes/sectotal size is 0  speedup is 0.00

[root@localhost rsync]# ls

test2/1  2  3

test2/ 目录里的123.txt也被删除了,这就是 --delete 选项的用处。还有一种情况就是如果在DST增加文件了,而SRC当中没有这些文件,同步时加上 --delete 选项后同样会删除新增的文件:

[root@localhost rsync]# touch test2/4

[root@localhost rsync]# ls test1/1  2  3

[root@localhost rsync]# ls test2/1  2  3  4

[root@localhost rsync]# rsync -a --delete test1/ test2/

[root@localhost rsync]# ls test1/1  2  3

[root@localhost rsync]# ls test2/1  2  3

6)使用 --exclude 选项

[root@localhost rsync]# touch test1/4

[root@localhost rsync]# rsync -a --exclude="4" test1/ test2/

[root@localhost rsync]# ls test1/1

2  3  4

[root@localhost rsync]# ls test2/1

2  3

另外还可以使用匹配字符

[root@localhost rsync]# touch test1/1.txt test1/2.txt

[root@localhost rsync]# ls test1/1

1.txt  2  2.txt  3  4

[root@localhost rsync]# rsync -a --progress --exclude=".txt" test1/ test2/

sending incremental file list./4

0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/5)sent 104 bytes

received 34 bytes  276.00 bytes/sectotal size is 0  speedup is 0.00

[root@localhost rsync]# ls test2/1  2  3  4

上例中,阿铭也连带着使用了 --progress 选项,这个主要是用来观察rsync同步过程的状态的。最后简单总结一下,平时你使用rsync同步数据的时候,使用-a选项基本上就可以达到我们想要的效果了,只是有时候会有个别的需求,会用到 -a --no-OPTION, -u, -L, --delete, --exclude 以及 progress 这些选项,还有些选项阿铭都没有介绍,如果在以后的工作中遇到特殊需求了,就去查一下rsync的man文档吧。

3. rsync 应用实例

1)通过ssh的方式

最上面介绍的5种方式当中,第二、第三(1个冒号)就属于通过ssh的方式,这种方式其实就是让用户去登录到远程机器,然后执行rsync的任务。

[root@localhost rsync]# rsync -avL test1/ www@192.168.0.101:/tmp/test2/

www@192.168.0.101's password:

sending incremental file listcreated directory /tmp/test2./11.txt22.txt34sent 327 bytes

received 129 bytes  182.40 bytes/sectotal size is 0

speedup is 0.00

这种方式就是前面介绍的第二种方式了,是通过ssh拷贝的数据,需要输入192.168.0.101 那台机器www 账户的密码。当然也可以使用第三种方式拷贝:

[root@localhost rsync]# rsync -avL www@192.168.0.101:/tmp/test2/ ./test3/

www@192.168.0.101's password:

receiving incremental file listcreated directory ./test3./11.txt22.txt34sent 128 bytes

received 351 bytes  38.32 bytes/sectotal size is 0

speedup is 0.00

以上两种方式如果写到脚本里,备份起来就有麻烦了,因为要输入密码,脚本本来就是自动的,不可能做到的。但是不代表没有解决办法。那就是通过密钥验证,密钥不设立密码就ok了。

在操作之前我们先讲明主机信息: 192.168.0.10 (主机名Aming-1)和 192.168.0.101 (主机名Aming)需要从Aming-1上拷贝数据到Aming上。

首先确认一下Aming-1上是否有这个文件 /root/.ssh/id_rsa.pub:

[root@Aming-1 ~]# ssh-keygen

Generating public/private rsa key pair.

阿铭之前生成过密钥对,所以这个文件已经存在了,如果你的Linux不存在这个文件,请按照如下方法生成:

[root@Aming-1 ~]# ssh-keygen

Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:3b:74:af:e8:08:ac:99:30:3f:ef:84:7a:a0:a6:3d:89 root@Aming-1

在这个过程中会有一些交互的过程,它首先提示要输入这个密钥的密码,出于安全考虑应该定义个密码,但是我们的目的就是为了自动化同步数据,所以这里不输入任何密码,直接按回车,即密码为空。最后则生成了私钥(/root/.ssh/id_rsa)和公钥文件(/root/.ssh/id_rsa.pub)

把公钥文件的内容拷贝到目标机器上:

[root@Aming-1 ~]# cat .ssh/id_rsa.pubssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5SPyJ/kliGTAMUan/GCN325VS8jMxvOn4uQoLU/NqBpCI3MrmvSucv6EAzxx1J2uOssW08el06LG+cUwXmm5mkqDRBV6C9qNnR/bVV5vr3QsUwbKPr7fdyJvruQWWR7cSL+mjP0SYmG2Qy2JcM3hl1IZArzC6yeUnq2Gwbax8LgbZE3XfRfOYdimwyh5Tfft7yLYipWc37k+oRUWkI3mW7PalsOlfQhxrLD/lS891y6RdSbGxMJWPoV0KMFbVh+uJgyAXpeuWl+F+/iuQPzb6w3h4pWI31bvbsE9BU82jSzHYEjpq3SN2MJN2vaLs5a0mVpm9zka/h4ITFB8Uy1iSQ== root@Aming-1

复制主机Aming-1的/root/.ssh/id_rsa.pub文件内容,并粘贴到主机Aming的/home/www/.ssh/authorized_keys中:

[root@Aming ~]# vim /home/www/.ssh/authorized_keys

在这一步也许你会遇到/home/www/.ssh目录不存在的问题,可以手动创建,并修改目录权限为700也可以执行ssh-keygen命令生成这个目录。保存/home/www/.ssh/authorized_keys文件后,再到主机Aming-1上执行:

[root@Aming-1 ~]# ssh www@192.168.0.101Last login: Wed Jun 12 12:24:34 2013 from 192.168.0.10[www@Aming ~]$

现在不用输入密码也可以登录主机Aming了。下面先从Aming主机退出来,再从主机Aming-1上执行一下rsync命令试试吧。

[root@Aming-1 ~]# rsync -av rsync/test1/ www@192.168.0.101:/tmp/test4/sending incremental file listcreated directory /tmp/test4./11.txt22.txt34sent 327 bytes  received 129 bytes  912.00 bytes/sectotal size is 0  speedup is 0.00

2) 通过后台服务的方式

这种方式可以理解成这样,在远程主机上建立一个rsync的服务器,在服务器上配置好rsync的各种应用,然后本机作为rsync的一个客户端去连接远程的rsync服务器。下面就介绍一下,如何去配置一台rsync服务器。

建立并配置rsync的配置文件 /etc/rsyncd.conf

[root@Aming-1 ~]# vim /etc/rsyncd.conf#port=873log file=/var/log/rsync.logpid file=/var/run/rsyncd.pid#address=192.168.0.10[test]path=/root/rsyncuse chroot=truemax connections=4read only=nolist=trueuid=rootgid=rootauth users=testsecrets file=/etc/rsyncd.passwdhosts allow=192.168.0.101

其中配置文件分为两部分:全部配置部分和模块配置部分,全局部分就是几个参数而已,就像阿铭的rsyncd.conf中port, log file, pid file, address这些都属于全局配置,而[test]以下部分就是模块配置部分了。一个配置文件中可以有多个模块,模块名自定义,格式就像阿铭的rsyncd.conf中的这样。其实模块中的一些参数例如use chroot, max connections, udi, gid, auth users, secrets file以及hosts allow都可以配置成全局的参数。当然阿铭给出的参数并不是所有的,你可以通过man rsyncd.conf 获得更多信息。下面就简单解释一下这些参数的意义:

port 指定在哪个端口启动rsyncd服务,默认是873

log file 指定日志文件

pid file 指定pid文件,这个文件的作用涉及到服务的启动以及停止等进程管理操作

address 指定启动rsyncd服务的IP,假如你的机器有多个IP,就可以指定其中一个启动rsyncd服务,默认是在全部IP上启动

[test] 指定模块名,自定义

path 指定数据存放的路径

use chroot true|false 默认是true,意思是在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true,如果你的数据当中有软连接文件的话建议设置成false。

max connections 指定最大的连接数,默认是0即没有限制

read only ture|false 如果为true则不能上传到该模块指定的路径下

list 指定当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏

uid/gid 指定传输文件时,以哪个用户/组的身份传输

auth users 指定传输时要使用的用户名

secrets file 指定密码文件,该参数连同上面的参数如果不指定则不使用密码验证,注意该密码文件的权限一定要是600

hosts allow 指定被允许连接该模块的主机,可以是IP或者网段,如果是多个,之间用空格隔开

编辑secrets file,保存后要赋予600权限,如果权限不对,不能完成同步

[root@Aming-1 ~]# cat /etc/rsyncd.passwdtest:test123[root@Aming-1 ~]# chmod 600 /etc/rsyncd.passwd

启动rsyncd服务

[root@Aming-1 ~]# rsync --daemon --config=/etc/rsyncd.conf

启动后,可以查看一下日志,并查看端口是否启动:

[root@Aming-1 ~]# cat /var/log/rsync.log[root@Aming-1 ~]# netstat -lnp |grep 873tcp     0    0 0.0.0.0:873        0.0.0.0:  LISTEN      12066/rsynctcp     0    0 :::873             :::*       LISTEN      12066/rsync

如果想开机启动,请把 rsync --daemon --confg=/etc/rsyncd.conf 写入到/etc/rc.d/rc.local文件。

到另一台机器上测试

[root@Aming ~]# rsync -avL test@192.168.0.10::test/test1/ /tmp/test5/Password:receiving incremental file listcreated directory /tmp/test5./11.txt22.txt34sent 143 bytes  received 354 bytes  994.00 bytes/sectotal size is 0  speedup is 0.00

阿铭刚刚提到有一个选项叫做 “use chroot” 默认为true,如果是true,同步的文件中如果有软连接,则会有问题,首先在主机Aming-1的/root/rsync/test1/ 目录下创建一个软连接文件:

[root@Aming-1 ~]# ln -s /root/test.txt rsync/test1/test.txt[root@Aming-1 ~]# ls -l rsync/test1/test.txtlrwxrwxrwx 1 root root 14  6月 12 13:24 rsync/test1/test.txt -> /root/test.txt

然后再到主机Aming上,同步:

[root@Aming ~]# rsync -avL test@192.168.0.10::test/test1/ /tmp/test6/Password:receiving incremental file listsymlink has no referent: "/test1/test.txt" (in test)created directory /tmp/test6./11.txt22.txt34sent 143 bytes  received 419 bytes  1124.00 bytes/sectotal size is 0  speedup is 0.00rsync error: some files/attrs were not transferred (see previous errors) (code23) at main.c(1532) [generator=3.0.6]

可以看到,如果设置 “use chroot” 为true则同步软连接文件会有问题,下面阿铭把主机Aming-1的rsync配置文件修改一下,把true改为false:

[root@Aming-1 ~]# sed -i 's/use chroot=true/use chroot=false/'  /etc/rsyncd.conf[root@Aming-1 ~]# grep 'use chroot' /etc/rsyncd.confuse chroot=false

然后再到主机Aming上再次执行同步:

[root@Aming ~]# rsync -avL test@192.168.0.10::test/test1/ /tmp/test7/Password:receiving incremental file listcreated directory /tmp/test7./11.txt22.txt34test.txtsent 162 bytes  received 410 bytes  1144.00 bytes/sectotal size is 0  speedup is 0.00

这样就没有任何问题啦,你也许会奇怪,为什么阿铭修改完rsyncd.conf配置文件后,没有重启rsyncd服务呢?其实这是rsync的一个特定机制,配置文件时即时生效的,不用重启服务。

上面的例子中,阿铭都有输入密码,这样同样也不能写入脚本中自动执行,其实这种方式也是可以不用手动输入密码的,它有两种实现方式。

第一种,指定密码文件

在客户端上,也就是主机Aming上,编辑一个密码文件:

[root@Aming ~]# vim /etc/pass

加入test用户的密码:

[root@Aming ~]# cat /etc/passtest123

修改密码文件的权限:

[root@Aming ~]# chmod 600 /etc/pass

在同步的时候,指定一下密码文件,就可以省去输入密码的步骤了:

[root@Aming ~]# rsync -avL test@192.168.0.10::test/test1/ /tmp/test8/ --password-file=/etc/pa***eceiving incremental file listcreated directory /tmp/test8./11.txt22.txt34test.txtsent 190 bytes  received 451 bytes  1282.00 bytes/sectotal size is 0  speedup is 0.00

第二种:在rsync服务器端不指定用户

在服务端也就是主机Aming-1上修改配置文件rsyncd.conf, 去掉关于认证账户的配置项(auth user 和 secrets file这两行):

sed -i 's/auth users/#auth users/;s/secrets file/#secrets file/' /etc/rsyncd.conf

上面的这个命令是把 “auth users” 和 “secrets file” 两行的最前面加一个 “#”, 这样就把这两行注释掉,使其失去意义。在前面阿铭未曾讲过sed的这种用法,其实也不难弄明白,只是用分号把两个替换的子命令块给替换了而已。然后我们再到客户端主机Aming上测试:

[root@Aming ~]# rsync -avL 192.168.0.10::test/test1/ /tmp/test9/receiving incremental file listcreated directory /tmp/test9./11.txt22.txt34test.txtsent 162 bytes  received 410 bytes  1144.00 bytes/sectotal size is 0  speedup is 0.00

注意,这里不用再加test这个用户了,默认是以root的身份拷贝的,现在已经不需要输入密码了。

http://ask.apelearn.com/question/5440X298X  拓展

转载于:https://blog.51cto.com/12127893/1874786

十八、Rsync 远程同步数据相关推荐

  1. rsync—远程同步

    目录 一:rsync概述 1.1rsync简介 1.2rsync同步方式 二:rsync特性 三:rsync同步源 四:rsync与cp.scp对比 五:常用rsync命令 六:rsync本地复制实例 ...

  2. rsync 远程同步

    rsync 远程同步 前言 一.Rsync简介 (1)rsync介绍 (2)rsync同步方式 二.rsync同步源 (1)配置rsync源 ①基本思路 ②配置文件rsync.conf ③独立的账号密 ...

  3. rsync远程同步的基本配置与使用

    rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份,镜像服务器等应用. rsync的官 ...

  4. 如何实现rsync远程同步和inotify实时同步

    目录 一:rsync介绍 1.1:rsync 服务的模式 1.2:rsync服务原理 1.3:配置rsync源思路 二.搭建rsync服务 2.1:建立rsync配置文件 2.2:客户机服务器B测试 ...

  5. rsync远程同步+inotify监控

    rsync远程同步+inotify 一.基本理论概述 1.1 前言概述 1.2 rsync服务器概述 1.3 rsync同步方式 二.实验操作 2.1 rsync本地复制 2.2 rsync服务器和客 ...

  6. 快速入门rsync远程同步

    文章目录 一.rsync同步简介 二.配置rsync源服务器 三.rsync远程同步实验 3.1实验环境 3.2实验步骤 四.rsync实时同步 4.1为什么要实时同步 4.2关于inotify 4. ...

  7. rsync远程同步及结合inotify实现实时同步

    rsync远程同步及结合inotify实现实时同步 rsync 命令格式 常用选项 实现免交互 rsync同步配置 环境准备 同步源编写rsync配置文件 创建数据文件 确保读取权限 开启服务 sla ...

  8. rsync 远程同步部署 上行下行同步

    rsync远程同步 一.rsync (Remote Sync,远程同步) 二.部署rsync源服务器 三.发起端 四.发起端配置 rsync+inotify 一.rsync (Remote Sync, ...

  9. 企业级别应用--rsync远程同步(配置 rsync 备份源、rsync 下行和上行、inotify+rsync 实时备份)

    文章目录 一.配置 rsync 源服务器 1.1 rsync简介 1.2 rsync特点 1.3 配置 rsync 同步源 1.4 测试rsync功能 下行同步的三种方式 二.inotify+rsyn ...

最新文章

  1. 【剑指offer-Java版】09斐波那契数列
  2. wxWidgets:wxRichTextCtrl概述
  3. php中isset() , unnset(), empty()函数
  4. Kung Fu Panda: Legends of Awesomeness 2
  5. 听说Mutex源码是出名的不好看,我不信,来试一下
  6. java webinf lib jar_java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序...
  7. kubernetesV1.13.1一键部署脚本(k8s自动部署脚本)
  8. 音频频谱特效 jaVa_基于Matlab dsp工具箱 的实时音频采集及频谱显示
  9. Dreamweaver中出现 以下翻译器没有被装载,由于错误:xxxx.htm:有不正确的设置信息 问题的解决方案(8,cs3,cs4似乎都会出现改问题)...
  10. 微信公众号主体如何变更:账号迁移全攻略
  11. 微信小程序正则表达式截取_微信小程序实现简单input正则表达式验证功能示例...
  12. 第一篇博客-Sql排名函数DENSE_RANK
  13. android线程池!如何试出一个Android开发者真正的水平?内容太过真实
  14. 蛮力算法解决问题(c语言)
  15. DBCO-PEG-TAT DBCO-聚乙二醇-TAT
  16. 介绍 Golang Timer(定时器)
  17. rabbitmq direct reply-to 在springAMQP和python之间的使用
  18. TL-WR886N密码JS加密
  19. Unity resource style/Theme.AppCompat.Dialog (aka xxx:style/Theme.AppCompat.Dialog) not found
  20. linux 程序退出 调试,linux驱动程序调试常用方法(printk,OOP,strace,hacking,ioctl,/proc,kgdb)...

热门文章

  1. web-harvest 采集腾讯读书“ 小说
  2. Ubuntu18.04设置1位数简单密码(三十二)
  3. 空气净化器的新思路:将植物养在机器里
  4. FPGA开发流程synthesis和implementatin的作用
  5. 色差通道在医学图像处理中的应用
  6. u-boot-2009.08在mini2440上的移植 增加SD卡功能
  7. log4j,ConversionPattern的英文全拼说明
  8. 蓝牙 att gatt 协议
  9. IIS/IIS Express中遇到的证书问题,此网站的安全证书存在问题。
  10. POI2010 Hamsters