From 425410894c668b5902d6da320cfa3fdc56011d7c Mon Sep 17 00:00:00 2001 From: tianci Date: Sat, 13 Nov 2021 11:19:42 +0800 Subject: [PATCH 1/6] Minor adjustments --- docs/books/learning_rsync/01_rsync_overview.zh.md | 3 +++ docs/books/learning_rsync/02_rsync_demo01.zh.md | 2 +- docs/books/learning_rsync/07_rsync_unison_use.zh.md | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/books/learning_rsync/01_rsync_overview.zh.md b/docs/books/learning_rsync/01_rsync_overview.zh.md index 959379c792..e47e70fd94 100644 --- a/docs/books/learning_rsync/01_rsync_overview.zh.md +++ b/docs/books/learning_rsync/01_rsync_overview.zh.md @@ -47,10 +47,13 @@ rsync就是为了满足以上的需求而出现的,使用GNU开源许可证协 **rsync本身只是一个增量备份的工具,并不具备实时数据同步的功能,需要搭配另外的程序做功能补充。除了这之外,同步是单向的,要想双向备份,需要使用另外的工具才能实现。** ### 基本原理和特点 + rsync是如何实现高效的单向数据同步备份的? + rsync的核心就是它的**Checksum算法**,如果您感兴趣可以去 [Rsync工作原理](https://rsync.samba.org/how-rsync-works.html) 以及 [rsync算法](https://rsync.samba.org/tech_report/) 了解,这一部分超出了作者的能力范围,不做过多的说明。 rsync的特点有: + * 能以递归的形式更新整个目录; * 能有选择的保留文件同步属性,比如硬链接、软链接、所有者、所属组、对应权限、修改时间等,可以保留其中的一部分属性; * 支持两种协议进行传输,一个是ssh协议,一个是rsync协议 diff --git a/docs/books/learning_rsync/02_rsync_demo01.zh.md b/docs/books/learning_rsync/02_rsync_demo01.zh.md index fc81351285..0500712030 100644 --- a/docs/books/learning_rsync/02_rsync_demo01.zh.md +++ b/docs/books/learning_rsync/02_rsync_demo01.zh.md @@ -64,7 +64,7 @@ Fedora34-->|pull/下载|RockyLinux8; ## 基于SSH协议的演示 !!! tip "注意!" - 这里Rocky Linux 8和 Fedora 34都使用 root 用户进行登录。Fodora 34是客户端,Rocky Linux 8是服务器。 + 这里Rocky Linux 8和 Fedora 34都使用 root 用户进行登录。Fedora 34是客户端,Rocky Linux 8是服务器。 ### pull/下载 diff --git a/docs/books/learning_rsync/07_rsync_unison_use.zh.md b/docs/books/learning_rsync/07_rsync_unison_use.zh.md index 2c6b1185c9..83269abef4 100644 --- a/docs/books/learning_rsync/07_rsync_unison_use.zh.md +++ b/docs/books/learning_rsync/07_rsync_unison_use.zh.md @@ -10,7 +10,7 @@ update: 2021-11-06 ## 环境准备 -* Rocky Linix 8 与 Fedora 34 都需要源代码编译安装 **inotify-tools** ,这里不具体展开。 +* Rocky Linux 8 与 Fedora 34 都需要源代码编译安装 **inotify-tools** ,这里不具体展开。 * 两台机器都必须免密登录验证,这里我们使用的是SSH协议进行 * [ocaml](https://github.com/ocaml/ocaml/) 使用v4.12.0,[unison](https://github.com/bcpierce00/unison/) 使用v2.51.4。 From 07a54c5dd01e9fa7aa4fa9baaa2924f861d36bc8 Mon Sep 17 00:00:00 2001 From: tianci Date: Sat, 13 Nov 2021 11:30:09 +0800 Subject: [PATCH 2/6] Modify words --- docs/books/learning_rsync/01_rsync_overview.zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/books/learning_rsync/01_rsync_overview.zh.md b/docs/books/learning_rsync/01_rsync_overview.zh.md index e47e70fd94..5730c727c6 100644 --- a/docs/books/learning_rsync/01_rsync_overview.zh.md +++ b/docs/books/learning_rsync/01_rsync_overview.zh.md @@ -22,7 +22,7 @@ update: 2021-11-04 ## rsync简述 -在一台服务器上我将第一个分区备份到第二个分区,也就是俗称的 " 本地备份(Local backup)",备份的具体工具有`tar`、`dd`、`dump`、`cp`等都能实现。但其实还是 "把鸡蛋放在一个同篮子里(Don't put the eggs in the same basket)",一旦硬件出现问题然后无法正常的引导和启动,数据还是没办法找回,为了解决本地备份的这个问题,我们引入了另外一种备份————"异地备份"。 +在一台服务器上我将第一个分区备份到第二个分区,也就是俗称的 " 本地备份(Local backup)",备份的具体工具有`tar`、`dd`、`dump`、`cp`等都能实现。但其实还是 "把鸡蛋放在一个同篮子里(Put the eggs in the same basket)",一旦硬件出现问题然后无法正常的引导和启动,数据还是没办法找回,为了解决本地备份的这个问题,我们引入了另外一种备份————"异地备份"。 有人会说,我在第一台服务器上使用tar或者cp命令,然后通过scp或者sftp传到第二台服务器不就可以了吗? From 9ea7c4315617975e86d4974ee083acdefb37e117 Mon Sep 17 00:00:00 2001 From: tianci li <86754294+jimcat8@users.noreply.github.com> Date: Sat, 13 Nov 2021 11:56:35 +0800 Subject: [PATCH 3/6] Update 02_rsync_demo01.zh.md --- docs/books/learning_rsync/02_rsync_demo01.zh.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/books/learning_rsync/02_rsync_demo01.zh.md b/docs/books/learning_rsync/02_rsync_demo01.zh.md index 0500712030..9017957dc2 100644 --- a/docs/books/learning_rsync/02_rsync_demo01.zh.md +++ b/docs/books/learning_rsync/02_rsync_demo01.zh.md @@ -114,6 +114,7 @@ rsync error: some files/attrs were not transferred (see previous errors) (code 2 ``` **提示权限拒绝,如何处理?** + 首先查看 /rsync/ 这个目录的权限。很明显没有w权限,我们可以使用`setfacl`赋予权限 ```bash From bc75d1311897dc42c17b92ec553163610e871e34 Mon Sep 17 00:00:00 2001 From: tianci li <86754294+jimcat8@users.noreply.github.com> Date: Sat, 13 Nov 2021 11:57:57 +0800 Subject: [PATCH 4/6] Update 03_rsync_demo02.zh.md --- docs/books/learning_rsync/03_rsync_demo02.zh.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/books/learning_rsync/03_rsync_demo02.zh.md b/docs/books/learning_rsync/03_rsync_demo02.zh.md index 7325df509f..b4fc9e2ebc 100644 --- a/docs/books/learning_rsync/03_rsync_demo02.zh.md +++ b/docs/books/learning_rsync/03_rsync_demo02.zh.md @@ -9,6 +9,7 @@ update: 2021-11-04 在vsftpd中,有虚拟用户(管理员自定义的模拟用户),原因在于使用匿名用户和本地用户都不太安全。我们知道基于SSH协议的服务器必须要保证有一个系统的用户,当有许多的同步需求时,就可能需要创建许多的用户,这显然不符合GNU/Linux的运维标准(用户数越多,服务器越不安全),在rsync中,为了安全性考虑,就有了rsync协议验证登录方式。 **具体如何操作?** + 在配置文件中写入对应的参数以及值就可以了。在Rocky Linux 8中,需要手动创建 /etc/rsyncd.conf 这个文件。 ```bash From 1784992dc0f8b3a7189ac51b51a3f50ce3946b05 Mon Sep 17 00:00:00 2001 From: tianci li <86754294+jimcat8@users.noreply.github.com> Date: Sat, 13 Nov 2021 12:13:08 +0800 Subject: [PATCH 5/6] Update 03_rsync_demo02.zh.md --- docs/books/learning_rsync/03_rsync_demo02.zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/books/learning_rsync/03_rsync_demo02.zh.md b/docs/books/learning_rsync/03_rsync_demo02.zh.md index b4fc9e2ebc..c31a6ee383 100644 --- a/docs/books/learning_rsync/03_rsync_demo02.zh.md +++ b/docs/books/learning_rsync/03_rsync_demo02.zh.md @@ -29,7 +29,7 @@ update: 2021-11-04 | comment = rsync | 备注或者描述信息 | | path = /rsync/ | 所在的系统路径位置 | | read only = yes| yes表示只读,no表示可读可写 | -| dont compress = *.gz *.gz2 *.zip | 哪些文件类型不对它进行压缩 | +| dont compress = \*.gz \*.gz2 \*.zip | 哪些文件类型不对它进行压缩 | | auth users = li| 启用虚拟用户,定义个虚拟用户叫什么。需要自行创建| | secrets file = /etc/rsyncd_users.db | 用来指定虚拟用户的密码文件位置,必须以.db结尾。文件的内容格式是"用户名:密码",一行一个 | From 15ae9a50b0a807b4641cbd9cd5aec9fed48eeebb Mon Sep 17 00:00:00 2001 From: tianci li <86754294+jimcat8@users.noreply.github.com> Date: Sat, 13 Nov 2021 12:53:03 +0800 Subject: [PATCH 6/6] Update 07_rsync_unison_use.zh.md --- .../learning_rsync/07_rsync_unison_use.zh.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/books/learning_rsync/07_rsync_unison_use.zh.md b/docs/books/learning_rsync/07_rsync_unison_use.zh.md index 83269abef4..d0150d859a 100644 --- a/docs/books/learning_rsync/07_rsync_unison_use.zh.md +++ b/docs/books/learning_rsync/07_rsync_unison_use.zh.md @@ -59,7 +59,7 @@ bin lib man ... [root@Rocky /usr/local/src/unison-2.51.4]# ls src/unison src/unison -[root@Rocky /usr/local/src/unison-2.51.4] cp -p src/unison /usr/local/bin +[root@Rocky /usr/local/src/unison-2.51.4]# cp -p src/unison /usr/local/bin ``` ## Fedora 34 安装unison @@ -86,7 +86,7 @@ bin lib man ... [root@fedora /usr/local/src/unison-2.51.4]# ls src/unison src/unison -[root@fedora /usr/local/src/unison-2.51.4] cp -p src/unison /usr/local/bin +[root@fedora /usr/local/src/unison-2.51.4]# cp -p src/unison /usr/local/bin ``` @@ -97,9 +97,9 @@ src/unison ### 配置Rcoky Linux 8 ```bash -[root@Rocky ~] mkdir /dir1 -[root@Rocky ~] setfacl -m u:testrsync:rwx /dir1/ -[root@Rocky ~] vim /root/unison1.sh +[root@Rocky ~]# mkdir /dir1 +[root@Rocky ~]# setfacl -m u:testrsync:rwx /dir1/ +[root@Rocky ~]# vim /root/unison1.sh #!/bin/bash a="/usr/local/inotify-tools/bin/inotifywait -mrq -e create,delete,modify,move /dir1/" b="/usr/local/bin/unison -batch /dir1/ ssh://testrsync@192.168.100.5//dir2" @@ -115,9 +115,9 @@ done ### 配置Fedora 34 ```bash -[root@fedora ~] mkdir /dir2 -[root@fedora ~] setfacl -m u:testrsync:rwx /dir2/ -[root@fedora ~] vim /root/unison2.sh +[root@fedora ~]# mkdir /dir2 +[root@fedora ~]# setfacl -m u:testrsync:rwx /dir2/ +[root@fedora ~]# vim /root/unison2.sh #!/bin/bash a="/usr/local/inotify-tools/bin/inotifywait -mrq -e create,delete,modify,move /dir2/" b="/usr/local/bin/unison -batch /dir2/ ssh://testrsync@192.168.100.4//dir1" @@ -139,4 +139,4 @@ done `[root@Rocky ~]# chmod +x /etc/rc.local` !!! tip "注意!" - 如果您要停止这个脚本的对应进程,可以在 `htop` 命令中找到它然后 **kill** 即可 \ No newline at end of file + 如果您要停止这个脚本的对应进程,可以在 `htop` 命令中找到它然后 **kill** 即可