UU Blog

Pyrsync使用说明

Pyrsync

调用rsync同步文件,从yaml文件读取配置。简化rsync使用,和方便管理备份项更改。未来将提供web界面添加yaml配置。

安装依赖

sudo pip install -r requirements.txt

sudo yum install -y rsync

使用说明

  • 新建项目yaml配置文件 cp playbook/default.yaml.template playbook/default.yaml

  • 配置好项目使用哪个账户复制,ip、备份目录之类的。

  • 要提前做好要备份的主机公钥认证,好让rsync不用输入密码。

  • 执行 ./pyrsync.py

yaml配置文件说明

  • actor 项说明
作用
name 做了ssh公钥认证登录的用户
IP 要备份的内容所在的服务器IP
port ssh端口
action rsync的参数项可以自由写 如:-avz –delete
  • execute 项说明 脚本统一放在script目录

填写脚本文件名,理论支持shell,Python等,
一定要在脚本开头定义好解析器。如bash #!/bin/bash

作用
pre-local 同步前在本机执行
pre-remote 同步前在远程机执行
post-remote 同步后在远程机执行
post-local 同步后在本机执行
  • playbook剧本sences场景项说明

  • 一个场景配置一个目录、和一个排除文件,排除文件目录在exclude,填写文件名即可。排除支持通配符,一行一个筛选项。cvs.txt是例子。

作用
item 要备份的目录
savepath 保存到本地的目录
exclude 描述排除文件的文件名 在exclude目录

使用场景

我要定时对 192.168.168.19上的三个项目的uploads目录进行同步备份。

分别是

  • /data/web1/uploads
  • /data/web2/uploads
  • /data/web3/uploads

还要定时导出MySQL数据库test2,到/data/sql,并同步备份过来。但是过滤掉.git目录、.svn目录。

备份内容保存到本地 /backup/node1 目录

根据上面信息,可以配置一个如下的yaml文件。

test.yaml (名字可以随意取,后缀一定得是yaml)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
actor:
name: root
ip: 192.168.168.19
port: 22
action: -avz

execute:
pre-local:
pre-remote: test.sh
post-remote:
post-local:

playbook:
sences:
- 1:
item: /data/web1/uploads
savepath: /backup/web1
exclude: cvs.txt
- 2:
item: /data/web2/uploads
savepath: /backup/web2
exclude: cvs.txt
- 3:
item: /data/web3/uploads
savepath: /backup/web3
exclude: cvs.txt
- 4:
item: /data/sql
savepath: /backup/sql
exclude: cvs.txt

上面pre-remote的test.sh内容如下

1
2
3
#!/bin/bash

mysqldump -uroot -predhat test2 > /data/sql/test2.sql

备份前目录情况如下:

远程机/data/ :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/data
├── .git
│   └── 11
├── sql
├── web1
│   ├── .git
│   │   └── master
│   └── uploads
│   └── web1.html
├── web2
│   ├── .svn
│   │   └── entries
│   └── uploads
│   └── web2.png
└── web3
└── uploads
└── web3.php

10 directories, 6 files

本机 /backup/node1/:

1
2
3
node1

0 directories, 0 files

现在执行./pyrsync.py

执行后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/backup/
├── sql
│   └── sql
│   └── test2.sql
├── web1
│   └── uploads
│   └── web1.html
├── web2
│   └── uploads
│   └── web2.png
└── web3
└── uploads
└── web3.php

8 directories, 4 files

项目地址: https://github.com/onecer/Pyrsync

给作者打一针鸡血