使用rsync+crontab每天定时备份数据库文件。

rsync
-a:归档 等于参数:rtopgDl;
-r:对子目录进行递归
-t:保持文件时间信息
-o:保持文件属主信息
-p:保持文件权限信息
-g:保持文件属组信息
-P:显示同步的过程及传输时的进度等信息
-D:保持设备文件的信息
-l:保留软链接信息
-v:显示过程
-z:传输时进行压缩,提高传输效率
–delete:

    rsync -r --delete  /tmp/  /data/:删除data目录内有,/tmp内无的文件或目录,将/tmp内有的文件或目录复制到/data内(data目录内没有)。
--exclude:排除    
   客户端使用方法:
   --exclude FILE:传输时排除拉取或推送的文件,多个文件时使用{a,b}的格式,连续的文件时还可以使用{a-g}。
   --exclude-from=FILE:多个文件名可以写到FILE文件内,排除文件内命名的文件。

   -e:借助其他通道:
   rsync  /etc/inittab -e 'ssh -p 123456 ' 192.168.1.1:/root

rsync服务器端配置:
vim /etc/rsyncd.conf(rsync无此配置文件,需要手动创建)

uid = rsync  //该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是"nobody"。
gid = rsync  //该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为"nobody"。
use chroot = no //如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。
max connections = 200  //最大客户端并发连接数
timeout = 300  //超时时间
pid file = /var/run/rsyncd.pid  //pid文件位置
lock file = /var/run/rsyncd.lock //锁文件位置
log file = /var/log/rsyncd.log  //日志文件存放位置
ignore errors  //指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IO错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。
read only = false //是否只读
list = false  //该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。
secrets file = /etc/rsync.passwd //密码文件位置
# exclude = a b //用来指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,一个模块只能指定一个exclude选项。但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exclude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。
# exclude from = /etc/test //指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义。
auth users=rsync  //进行rsync传输的用户
[mariadb1]//模块定义
path = /home/nfs/rsync/mariadb-160/  //指定推送的文件目录
hosts allow = 10.33.133.160/24   //允许的列表

完成参数配置后,确认本地是否有rsync的用户和组。无此用户的话需要添加此用户。

#groupadd rsync
#useradd -g rsync -s /sbin/nologin -M rsync

创建完成目录后,生成密码文件(secrets file指定的文件),并将此文件权限修改为只有属主有读写权限,其他无任何权限。

echo "rsync:123456" >> /etc/rsync.passwd
chmod 600 /etc/rsync.passwd

密码文件创建成功后,检查path参数指定的路径的属主和属组是否是uid和gid指定的属主和属组,若不是需要更改。

#chown -R rsync.rsync /home/nfs/rsync/mariadb-160/

配置完成后就可以推送或者拉取了。

# rsync -avz /mysql/data/ [email protected]::mariadb1  

输入密码就可以正常传输数据了。
使用–password-file 可以从配置文件读取密码,而不需要每次同步都输入密码。
使用–password-file参数需要在客户端生成配置文件:

#echo "123456" > /etc/rsync.passwd
此文件为密码文件,也需要更改文件的权限
#chmod 600 /etc/rsync.passwd
再执行同步命令,就不需要输入密码了。
# rsync -avz /mysql/data/ [email protected]::mariadb1 --password-file=/etc/rsync.passwd

以上配置rsync完成。
rsync服务不会开机启动,如果需要开机启动服务,可以在rc.local配置文件内定义。

#echo "/usr/bin/rsync --daemon" >> /etc/rc.local

使用crontab命令制定每日计划任务。

#crontab -e 
0 0 * * * /usr/bin/rsync -avz /mysql/data/ rsync@10.33.133.244::mariadb1 --password-file=/etc/rsync.passwd//定义每天的0点推送本地/mysql/data/下的所有数据到10.33.133.244 mariadb1模块定义的path路径/home/nfs/rsync/mariadb-160/内。

以上就是配置的完整过程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章