Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion docs/books/learning_rsync/01_rsync_overview.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -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传到第二台服务器不就可以了吗?

Expand All @@ -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协议
3 changes: 2 additions & 1 deletion docs/books/learning_rsync/02_rsync_demo01.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/下载

Expand Down Expand Up @@ -114,6 +114,7 @@ rsync error: some files/attrs were not transferred (see previous errors) (code 2
```

**提示权限拒绝,如何处理?**

首先查看 /rsync/ 这个目录的权限。很明显没有w权限,我们可以使用`setfacl`赋予权限

```bash
Expand Down
3 changes: 2 additions & 1 deletion docs/books/learning_rsync/03_rsync_demo02.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ update: 2021-11-04
在vsftpd中,有虚拟用户(管理员自定义的模拟用户),原因在于使用匿名用户和本地用户都不太安全。我们知道基于SSH协议的服务器必须要保证有一个系统的用户,当有许多的同步需求时,就可能需要创建许多的用户,这显然不符合GNU/Linux的运维标准(用户数越多,服务器越不安全),在rsync中,为了安全性考虑,就有了rsync协议验证登录方式。

**具体如何操作?**

在配置文件中写入对应的参数以及值就可以了。在Rocky Linux 8中,需要手动创建 <font color=red>/etc/rsyncd.conf</font> 这个文件。

```bash
Expand All @@ -28,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结尾。文件的内容格式是"用户名:密码",一行一个 |

Expand Down
20 changes: 10 additions & 10 deletions docs/books/learning_rsync/07_rsync_unison_use.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -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。

Expand Down Expand Up @@ -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
Expand All @@ -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
```


Expand All @@ -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://[email protected]//dir2"
Expand All @@ -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://[email protected]//dir1"
Expand All @@ -139,4 +139,4 @@ done
`[root@Rocky ~]# chmod +x /etc/rc.local`

!!! tip "注意!"
如果您要停止这个脚本的对应进程,可以在 `htop` 命令中找到它然后 **kill** 即可
如果您要停止这个脚本的对应进程,可以在 `htop` 命令中找到它然后 **kill** 即可