linux自动代码增量备份 结合 全量备份

需求说明

系统环境:linux(centos7)
备份内容:增量备份 结合 全量备份

公司中的生产服务器数据非常重要,所以我们需要通过备份服务器将生产服务器的数据进行备份。

rsync的增量备份,不单单会同步新增的内容,就连删除的内容也会同步。假如管理代码人员误操作将代码误删除,那么备份服务器检测到备份原的数据产生变化后,也会与其同步,此时生产服务器与备份服务器的代码都会丢失。

增量备份要求的频率较高,但在生产与备份服务器之间的网络资源消耗较少,所以我们可以使用rsync来做增量备份,然后结合在备份服务器本地内做全量备份。
这样不但减少了生产与备份服务器使用了全量备份的网络资源开销,还避免了数据大量丢失的情况。

增量备份

使用linux的rsync功能来增量备份开发代码

服务器端

  • 安装rsync

yum -y install rsync
  • 添加配置文件

如果没有/etc/rsyncd.conf 文件,需要手动创建,如果有直接修改即可。

服务端配置文件/etc/rsyncd.conf 内容如下:

# 在文件最下方添加内容

pid file=/var/rsync/rsync.pid
port=873
lock file=/var/rsync/lock.log
log file=/var/rsync/rsync.log

[py_code]
path=/home/py/
use chroot=no
max connections=10
read only=yes
write only=no
list=no
uid=root
gid=root
auth users=root
secrets file=/etc/rsync_server.pas
strict modes=yes
hosts allow=*
#hosts deny=1.1.1.1
ignore errors=yes
timeout=120 #秒

参数说明:
[py_code] :模块名,自己定义,可以在下方添加其它模块。须与客户端执行命令中的模块名一致。
path:要备份的服务端文件夹路径。
hosts allow:允许的客户端连接IP。
secrets file:服务端密码文件,内容格式为,用户名:密码。
auth users:有权限的用户名,与密码文件中用户名一致。

  • 创建密码文件

在/etc中创建文件rsync_server.pas,加入用户名与密码,内容格式为:用户名:密码。

nano /etc/rsync_server.pas

例如,本例中rsync_server.pas文件内容为root:123456

保存文件后,设置密码文件权限为600

chmod 600 /etc/rsync_server.pas

注意密码文件只有设置为600权限才可以使用,客户端的密码文件也必须为600。

  • 启动与停止rsync服务
# 启动rsync
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
# 停止rsync
ps -ef | grep rsync
kill -9 进程号
rm -rf /var/rsync/rsync.pid

我们测试的时候,一定要保证rsync服务是启动的

客户端

1.查看是否安装rsync,系统一般默认已安装,安装方法:yum -y install rsync(同服务端)。
2.在/etc下创建密码文件rsync_client.pas,注意内容只有密码,且与服务端密码文件中的密码相同。
3.更改密码文件权限为600。

添加定时任务

在客户端中添加定时任务,每天几分钟执行命令从服务器端拉取数据,进行备份。
直接编辑/etc/crontab文件,添加一条定时任务即可,例如每1分钟以root身份执行下方的rsync命令,将远程服务器192.168.1.1中的py_code模块对应的文件夹(服务端/etc/rsyncd.conf文件中的[py_code]模块对应的文件夹路径 )中的内容增量备份到当前服务器的/home/py_backup目录:


*/1 * * * * root rsync -aqzrtopg --delete rsync://[email protected]/py_code /home/py_backup --password-file=/etc/rsync_client.pas

命令中的root为服务端密码文件中配置的用户名;py_code为服务端/etc/rsyncd.conf文件中的[py_code]模块名,rsync会通过模块名找到对应的备份文件路径;
/home/py_backup是当前服务器文件夹路径,远程服务器需要备份的文件夹里的内容会增量备份到这里,所以需要提前建好该目录;
/etc/rsync_client.pas为当前服务器的密码文件。
当直接执行上方备份命令时,可以加入-v --progress参数, 即显示具体备份过程信息,定时任务中则不需要。

此外,使用crontab -e命令也可以直接配置定时任务,但与vi /etc/crontab不同,不同点如下:
1./etc/crontab中的为系统任务,只有root可以设定,而crontab -e设置的定时任务为用户任务,设定完成后会将任务自动写入/var/spool/cron/usename文件。
2./etc/crontab中的任务需要指定用户名,crontab -e不需要。

  1. crontab -e 编辑完后需要重启服务,systemctl restart crond.service

    • 时间定义说明
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

每天零点执行备份命令
00 00 * * * shell命令

每天零点和12点执行备份命令
00 00,12 * * * shell命令

全量备份

下面要做的是在linux中,将linux文件定时全量备份,且每次备份的文件名不同,还要删除超过指定时间的历史备份文件。

将 /home/py 全量备份到/home/back下

cd /home/back   #进入到备份目录下
nano backup.sh  #创建一个备份脚本,这个脚本也可以放到其他目录中(自定义)

# backup.sh中写内容如下:

#!/bin/sh
cp -r /home/py /home/back  #将数据copy到备份目录,先copy是因为怕在压缩的过程当中源文件产生变化

tar -czvf /home/back/$(date +%Y%m%d).tar.gz /home/back/py  # 将copy过来的/home/back/py文件目录进行压缩,使用日期当做新压缩文件名字存入到/home/back中;

rm -rf /home/back/py  # 删除copy过来的文件,保留压缩过的文件就好

find ./ -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;  # 查找并删除超过30天的.tar.gz文件,来避免全量备份的历史文件过多导致占用大量的磁盘空间。

chmod -R 777 backup.sh  # 修改脚本文件的权限,否则会自动执行失败,提示无权限

crontab -e  # 修改crontab

# 在crontab中写内容如下:
59 23 * * * /home/back/backup.sh  # 每天23点59分运行backup.sh脚本。可以根据需求修改时间,或定义多个执行计划。
# 保存退出该文件后重启crontab服务

systemctl restart crond.service  # 重启crontab服务

原文地址:https://blog.51cto.com/daimalaobing/2445504

时间: 2024-10-03 22:51:25

linux自动代码增量备份 结合 全量备份的相关文章

Percona Xtrabackup实现mysql全量备份和增量备份

###########################################################################        安装mysql或者mariaDB本地也要装mysql或者mariaDB相关的包          ##########################################################################略 ######################################### 

Centos 6.9 安装xtrabackup-2.4.8 通用包,yum安装,全量备份,增量备份

xtrabackup-2.4.8的安装及使用 ---Yum安装 官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.html [[email protected] ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm [[

Xtrabackup 备份大数据库(全量备份和增量备份)

Xtrabackup Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁): mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合. Xtrabackup优点 1)备份速度快,物理备份可靠 2)备份过程不会打断正在执行的事务(无需锁表) 3)能够基于压缩等功能节约磁盘空间和流量 4)自动备份校验 5

负责数据库的备份,实现周一 之 周六增量备份,周日全量备份

1.mysql全量备份.增量备份.开启mysql的logbin日志功能.在/etc/my.cnf文件中加入以下代码: [mysqld] log-bin ="/home/mysql/logbin.log" binlog-format = ROW log-bin-index ="/home/mysql/logindex" binlog_cache_size=32m max_binlog_cache_size=512m max_binlog_size=512m 重启mys

Mysql使用innobackupex在线备份方案(全量+增量)操作记录

在日常的linux运维工作中,对mysql数据库的备份是非常重要的一个环节.关于mysql的备份和恢复,比较传统的是用mysqldump工具.今天这里介绍下另一款mysql备份工具innobackupex,利用它对mysql做全量和增量备份,仅仅依据本人实战操作做一记录,如有误述,敬请指出~ 一.innobackupex的介绍Xtrabackup是由percona开发的一个开源软件,是使用perl语言完成的脚本工具,能够非常快速地备份与恢复mysql数据库,且支持在线热备份(备份时不影响数据读写

Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录

在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景:每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份. 下面对这种备份方案详细说明下:1.MySQLdump增量备份配置执行增量备份的前提条件是MySQL打开binlog日志功能,在my.cnf中加入log-bin=/opt/Data/MySQL-bin"log-bin="后的字符串为日志记载目录,一般建议放在不同于MySQL数据目录的磁盘

使用awscli创建ec2自动快照(全量备份)

awscli介绍 官方说明:The AWS Command Line Interface is a unified tool to manage your AWS services. 基本语法为:aws [options] <command> <subcommand> [parameters] 选项 --debug (boolean) 打开debug日志. --endpoint-url (string) 使用指定的url替换默认url. --no-verify-ssl (boole

xtrabackup实现全量备份和增量备份

mysql增量和完全备份innobackupex2.1.9版本1 yum安装: 官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.htmlyum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpmyum list | grep per

mysql的全量备份与增量备份

全量备份:可以使用mysqldump直接备份整个库或者是备份其中某一个库或者一个库中的某个表. 备份所有数据库:[[email protected] ~]# mysqldump -uroot -p123456 --all-databases >/opt/all.sqlmysqldump: [Warning] Using a password on the command line interface can be insecure. 备份单个数据库的所有表:[[email protected]