数据备份对象:
- 系统、服务文件(配置文件、脚本、日志、上传的附件等)—工具(tar、cp、scp、rsync)
- 数据库文件(关系型数据库(MySQL/MariaDB等)、非关系型数据库(Redis、MongoDB等))—工具(mysqldump、xtrabackup)
备份原则:根据业务的实际情况(业务重要性、业务量、磁盘空间、网络状况等因素),定好备份的频率,备份文件保存的位置(本地、异地),备份文件保存的周期
rsync命令使用说明
格式:
- rsync [OPTION] … SRC DEST #从本地到远端,两边做了密钥认证免登录
- rsync [OPTION] … SRC [user@]host:DEST #从本地到远端
- rsync [OPTION] … [user@]host:SRC DEST #从远端到本地
- rsync [OPTION] … SRC [user@]host::DEST #“::” 表示通过ip/port的方式拷贝同步
- rsync [OPTION] … [user@]host::SRC DEST
主要参数:
参数 | 说明 |
---|---|
-a | 包含-rtplgoD |
-r | 同步目录时要加上,类似cp时的-r选项 |
-v | 同步时显示一些信息,让我们知道同步的过程 |
-l | 保留软连接 |
-L | 加上该选项后,同步软链接时会把源文件给同步 |
-p | 保持文件的权限属性 |
-o | 保持文件的属主 |
-g | 保持文件的属组 |
-D | 保持设备文件信息 |
-t | 保持文件的时间属性 |
-P | 显示同步过程,比如速率,比-v更加详细 |
-u | 加上该选项后,如果DEST中的文件比SRC新,则不同步 |
-z | 传输时压缩 |
–delete | 删除DEST中SRC没有的文件 |
–exclude | 过滤指定文件,如–exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步,要过滤多个目标需要使用多个–exclude |
常用搭配:
- rsync -avL /etc/passwd [email protected]:/tmp/passwd.bak
- rsync -avL -e “ssh -p 2233” /etc/passwd [email protected]:/tmp/passwd.bak #通过ssh方式同步
rsync数据同步的两种方式
- 通过ssh方式同步
- 通过服务的方式同步
rsyncd.conf 配置文件配置
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.85.129
[test]
path=/tmp/rsync
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=test
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.85.129
rsyncd.conf 配置文件说明
#port:指定在哪个端口启动rsyncd服务,默认是873端口。
#log file:指定日志文件。
#pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等进程管理操作。
#address:指定启动rsyncd服务的IP。假如你的机器有多个IP,就可以指定由其中一个启动rsyncd服务,如果不指定该参数,默认是在全部IP上启动。
#[]:指定模块名,里面内容自定义。
#path:指定数据存放的路径。
#use chroot true|false:表示在传输文件前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true,如果你的数据当中有软连接文件,建议设置成false。
#max connections:指定最大的连接数,默认是0,即没有限制。
#read only ture|false:如果为true,则不能上传到该模块指定的路径下。
#list:表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏。
#uid/gid:指定传输文件时以哪个用户/组的身份传输。
#auth users:指定传输时要使用的用户名。
#secrets file:指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意该密码文件的权限一定要是600。
格式:用户名:密码
#hosts allow:表示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用空格隔开。当设置了authusers和secretsfile后,客户端连服务端也需要用用户名密码了,若想在命令行中带上密码,可以设定一个密码文件
rsync -avL /root/shell/ [email protected]::test --password-file=/etc/rsync.passwd
其中/etc/pass内容就是一个密码,权限要改为600
PS:stat命令
[root@linux2019 shell]# stat test.txt
File: 'test.txt'
Size: 237 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 20722002 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-03-13 14:52:11.484991389 +0800
Modify: 2019-03-12 14:48:44.420158927 +0800
Change: 2019-03-12 14:48:44.420158927 +0800
Birth: -
- atime:最近一次查看、访问文件的时间
- mtime:最近一次修改文件内容的时间
- ctime:最近一次修改文件本身属性的时间(inode信息:文件的大小、属主、属组、权限)