From 425410894c668b5902d6da320cfa3fdc56011d7c Mon Sep 17 00:00:00 2001 From: tianci Date: Sat, 13 Nov 2021 11:19:42 +0800 Subject: [PATCH 1/7] 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/7] 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/7] 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/7] 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/7] 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/7] 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** 即可 From f47d16f0072632d605eb6c95b878aecdeda0763f Mon Sep 17 00:00:00 2001 From: Steven Spencer Date: Mon, 15 Nov 2021 09:31:21 -0600 Subject: [PATCH 7/7] Edit 364 * fixed an error I introduced in edit_365 * minor wording changes Chinese version --- docs/books/learning_rsync/01_rsync_overview.md | 2 +- docs/books/learning_rsync/01_rsync_overview.zh.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/books/learning_rsync/01_rsync_overview.md b/docs/books/learning_rsync/01_rsync_overview.md index dfc8225e9f..f6ba8bdbcb 100644 --- a/docs/books/learning_rsync/01_rsync_overview.md +++ b/docs/books/learning_rsync/01_rsync_overview.md @@ -23,7 +23,7 @@ What are the backup methods? ## rsync in brief -On a server, I backed up the first partition to the second partition, which is commonly known as "Local backup." The specific backup tools are `tar` , `dd` , `dump` , `cp `, etc. can be achieved. But you shouldn't "put all of your eggs in the same basket." Once the hardware fails and cannot start normally, the data still cannot be retrieved." In order to solve the local backup For this problem, we introduced another kind of backup --- "remote backup". +On a server, I backed up the first partition to the second partition, which is commonly known as "Local backup." The specific backup tools are `tar` , `dd` , `dump` , `cp `, etc. can be achieved. But you shouldn't "put all of your eggs in the same basket." Once the hardware fails and cannot start normally, the data still cannot be retrieved. In order to solve the local backup For this problem, we introduced another kind of backup --- "remote backup". Some people will say, can't I just use the `tar` or `cp` command on the first server and send it to the second server via `scp` or `sftp`? diff --git a/docs/books/learning_rsync/01_rsync_overview.zh.md b/docs/books/learning_rsync/01_rsync_overview.zh.md index 5730c727c6..24eac1c30d 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`等都能实现。但其实还是 "把鸡蛋放在一个同篮子里(Put the eggs in the same basket)",一旦硬件出现问题然后无法正常的引导和启动,数据还是没办法找回,为了解决本地备份的这个问题,我们引入了另外一种备份————"异地备份"。 +在一台服务器上我将第一个分区备份到第二个分区,也就是俗称的 " 本地备份(Local backup)",备份的具体工具有`tar`、`dd`、`dump`、`cp`等都能实现。但是 但是你不应该“把所有的鸡蛋放在同一个篮子里”。 一旦硬件出现故障无法正常启动,数据仍然无法检索。 为了解决本地备份这个问题,我们引入了另一种备份——“远程备份”。 有人会说,我在第一台服务器上使用tar或者cp命令,然后通过scp或者sftp传到第二台服务器不就可以了吗?