首页 > 系统相关 >一份Linux备份策略-----------------linux备份数据

一份Linux备份策略-----------------linux备份数据

时间:2023-08-21 10:12:29浏览次数:36  
标签:脚本 tar 备份 ----------------- crontab Linux backup

一份Linux备份策略详细思路

原创 六便士IT 六便士IT 2023-06-25 11:00 发表于陕西 收录于合集#Linux运维34个

在没有任何备份策略的情况下,我建议按照以下步骤去备份数据:

  1. 确定备份的数据范围:需要备份哪些数据,包括文件、数据库、系统配置等。

  2. 确定备份周期和保留时间:备份的周期可以是每日、每周或每月备份一次。保留时间需要根据备份的数据重要程度和数据量来决定。

  3. 选择备份工具:常见的备份工具有rsync、tar等,具体选择哪种备份工具需要根据备份的数据类型和备份的方式来确定。

  4. 确定备份存储位置:可以是本地备份,也可以是云端备份,备份存储位置需要根据备份数据的大小和性质来决定。

  5. 定时执行备份任务:可以通过crontab定时执行备份任务,定时任务的设置需要根据备份周期来确定。

 

综合考虑以上因素,我建议使用以下备份方案:

1.使用rsync工具每日备份重要数据至本地备份目录。

以下是实现方法:

1.安装rsync工具

在Linux系统中,可以使用以下命令来安装rsync工具:

sudo yum install rsync

2.创建备份目录

sudo mkdir /backup

3.编写备份脚本

创建一个备份脚本文件,比如命名为backup.sh,并在该文件中编写备份脚本。备份脚本的主要功能是将重要数据备份至本地备份目录,并将备份结果输出到日志文件中。

备份脚本示例代码如下:

#!/bin/bash

# define source directory
source_dir="/path/to/important/data/"

# define backup directory
backup_dir="/backup/"

# define log file
log_file="/backup/backup.log"

# perform backup
rsync -avz --delete $source_dir $backup_dir >> $log_file 2>&1

在备份脚本中,定义了源目录sourcedir和备份目录sourcedir和备份目录backupdir,并使用rsync命令将sourcedir同步至sourcedir同步至backupdir中。其中,rsync命令中的选项含义如下:

  • -a:归档模式,将所有文件属性、权限、时间等信息保留在备份中。

  • -v:详细模式,输出备份过程中的详细信息。

  • -z:压缩模式,将备份数据进行压缩传输,减少数据传输时间和空间占用。

  • –delete:删除模式,将目标目录中不在源目录中的文件删除。

备份脚本每次执行时,将备份信息输出到日志文件$logfile中。

4.设置定时任务

使用crontab命令设置备份脚本的定时任务。执行以下命令打开crontab编辑器:

sudo crontab -e

在编辑器中添加以下一行代码:

0 0 * * * /bin/bash /path/to/backup.sh

这表示每天的0时0分执行一次备份脚本。

保存并退出编辑器后,crontab将自动执行备份脚本。

这样就完成了Linux系统每日使用rsync备份重要数据至本地备份目录的备份策略。

 

2.使用SQLdump备份数据库至本地备份目录,并于每周备份一次。

1.创建本地备份目录

在Linux系统中,可以使用以下命令创建一个新目录来作为本地备份目录:

mkdir /var/backup

2.安装备份工具

检查系统是否已经安装了备份工具mysqldump

yum install mysql

3.编写备份脚本

可以使用以下脚本将数据库备份到本地备份目录。此脚本将备份所有数据库,并将每个备份文件命名为“DB名称-YYYY-MM-DD.sql”

#!/bin/bash

# 定义变量
USERNAME=root
PASSWORD='your_password'
BACKUP_DIR='/var/backup'
DATE="$(date +%Y-%m-%d)"

# 创建备份文件夹
mkdir -p $BACKUP_DIR/$DATE

# 备份所有数据库
databases=`mysql -u $USERNAME -p$PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
for db in $databases; do
   mysqldump --force --opt --user=$USERNAME -p$PASSWORD --databases $db | gzip > "$BACKUP_DIR/$DATE/$db-$DATE.sql.gz"
done

确保将“your_password”替换为你的数据库密码,然后将代码复制并保存为名为“backup.sh”的文件

4.设置备份计划

使用Linux系统的计划任务工具crontab,可以定期运行备份脚本。打开终端并输入以下命令打开crontab编辑器:

crontab -e

将以下行添加到文件末尾:

0 0 * * 0 /bin/bash /path/to/backup.sh

这将在每周的星期日午夜(0点0分)运行备份脚本。将“/ path / to / backup.sh”替换为实际备份脚本的文件路径。

现在完成了备份策略的实施。数据库将每周备份到本地备份目录中,并使用当前日期作为备份文件名的一部分。您可以按需自定义备份目录和备份计划。

 

3.使用tar工具备份系统配置文件并加密备份,每月备份一次,存储至云端。

1.在Linux系统中,使用tar命令进行备份,指定备份的文件夹和文件列表

tar -czvf /backup/config.tar.gz /etc /var/www/html /home/user1 /home/user2

这样会将/etc、/var/www/html、/home/user1和/home/user2文件夹中的所有文件和子文件夹压缩成一个名为config.tar.gz的文件。

2.为了加密备份文件,使用openssl命令对备份文件进行加密。首先要生成一个密钥

openssl genrsa -aes256 -out backup.key 2048

这样会生成一个名为backup.key的密钥文件,密钥位数为2048,加密算法为aes256。

3.使用生成的密钥对备份文件进行加密:

openssl enc -aes256 -salt -in /backup/config.tar.gz -out /backup/config.tar.gz.enc -pass file:/backup/backup.key

这样会生成一个名为config.tar.gz.enc的加密文件。

4.将加密文件上传到云端存储,如AWS S3、Google Cloud Storage等。

为了每月备份一次,可以设置定时任务来进行备份。打开crontab编辑器:

crontab -e

在打开的文件中添加以下行:

0 2 1 * * tar -czvf /backup/config.tar.gz /etc /var/www/html /home/user1 /home/user2 && openssl enc -aes256 -salt -in /backup/config.tar.gz -out /backup/config.tar.gz.enc -pass file:/backup/backup.key && aws s3 cp /backup/config.tar.gz.enc s3://my-bucket/backup/$(date +\%Y-\%m-\%d)-config.tar.gz.enc

这样会在每个月的1号2点钟自动进行备份,并且将加密的备份文件上传到AWS S3存储桶中。

注意:上述命令中的aws s3 cp命令需要安装awscli工具,并进行配置。另外,如果没有安装openssl和awscli工具,需要先进行安装。

 

4.设置crontab定时执行备份任务,每日、每周、每月的备份任务各设置一次,并在备份完成后发送邮件通知备份情况。

首先,我们需要安装备份工具,这里我们选择rsync

yum install rsync -y

然后,创建备份脚本。

vim /root/backup.sh

在备份脚本中添加以下内容:

#!/bin/bash

# 定义备份参数
backup_dir="/root/backup"
source_dir="/"
backup_name="$(date +%Y-%m-%d-%H%M%S).tar.gz"

# 创建备份目录
mkdir -p ${backup_dir}

# 执行备份
tar -zcvf ${backup_dir}/${backup_name} ${source_dir}

# 发送备份通知邮件
echo "The backup job has been completed" | mail -s "Backup Notification" [email protected]

上面的备份脚本会将系统根目录下的所有文件备份到/root/backup目录下,并将备份文件压缩成tar.gz格式。备份完成后,会发送一封备份通知邮件给[email protected]

接下来,我们可以使用crontab定时执行备份任务。假设我们需要每天在凌晨1点执行备份任务,每周在星期天凌晨1点执行备份任务,每月在1号凌晨1点执行备份任务,可以按照以下步骤设置crontab定时任务。

crontab -e

在打开的文件中添加以下内容:

# 每天1点执行备份任务

0 1 * * * /bin/bash /root/backup.sh

# 每周星期天1点执行备份任务

0 1 * * 7 /bin/bash /root/backup.sh

# 每月1号1点执行备份任务

0 1 1 * * /bin/bash /root/backup.sh

上面的配置会在每天凌晨1点、每周星期天凌晨1点、每月1号凌晨1点执行备份脚本。

最后,我们需要配置邮件发送功能。可以使用mailx来完成邮件发送。

yum install mailx -y

然后编辑邮件配置文件。

vim /etc/mail.rc

在配置文件中添加以下内容:

set from=your_email_address
set smtp=smtp.example.com
set smtp-auth-user=username
set smtp-auth-password=password
set smtp-auth=login

上面的配置中,youremailaddress是你的发件人邮箱地址,smtp.example.com是SMTP服务器地址,username和password`是SMTP服务器的用户名和密码。

现在,当备份完成后,你将收到一封备份通知邮件

 

5.设置存档日志,记录每次备份的详细信息和完成时间,并根据保留时间周期定期清理备份数据。

以下是在Linux(CentOS 7)上设置备份策略、存档日志、记录备份信息并定期清理备份数据的步骤:

  1. 确认备份目标:在设置备份策略之前,首先需要确定要备份的数据、备份的目标位置(本地目录、网络共享目录等)以及备份方式(完整备份、增量备份等)。

  2. 创建备份脚本:根据选定的备份目标和策略,编写备份脚本。备份脚本可以用Shell脚本或Python脚本实现,具体实现方式根据具体情况而定。备份脚本应该包含完整备份和增量备份、日志记录、清理备份数据等功能。

  3. 设置存档日志:在备份脚本中,需要记录每次备份的详细信息和完成时间,以便于后续查找、恢复数据。可以通过Shell脚本中的echo命令或Python脚本中的logging模块实现。对于较大的备份数据,可以将存档日志文件设置到本地磁盘之外的其他存储介质,如网络共享目录或云存储。

  4. 定期清理备份数据:为避免备份数据过多占用存储空间,需要根据保留时间周期定期清理备份数据。可以通过Shell脚本中的find命令来定期清理,同时在日志中记录清理的详细信息。

  5. 设置计划任务:将备份脚本和清理脚本添加到系统计划任务中,可以实现备份和清理的自动化执行。可以使用crontab命令来设置计划任务,定期执行备份脚本和清理脚本。

通过以上步骤,可以在Linux系统上设置备份策略、存档日志并定期清理备份数据,确保数据的安全性和可靠性。

以上备份方案可以提供较为全面的数据备份保护,可以应对大部分意外数据丢失情况,但需要根据实际情况灵活调整和优化。同时需要定期测试备份数据的可恢复性,以确保备份策略的有效性。

图片

收录于合集 #Linux运维  34个 上一篇Linux系统中备份策略涉及哪些知识点下一篇在Linux中查看系统资源常用命令有哪些 阅读 1632 六便士IT   ​ 收藏此内容的人还喜欢   挖到过src吗?请描述一下过程     六便士IT 不看的原因   别再自己傻傻安装MySQL了,用Docker玩MySQL贼方便     Java学习小站 不看的原因   Linux命令篇55(清除僵死进程)     全解彭 不看的原因      

标签:脚本,tar,备份,-----------------,crontab,Linux,backup
From: https://www.cnblogs.com/cherishthepresent/p/17645259.html

相关文章

  • windows 桌面GUI自动化-1. pywinauto 环境准备
    前言Pywinauto是基于Python开发的,用于自动化测试的脚本模块,主要操作于Windows标准图形界面。它可以允许你很容易的发送鼠标、键盘动作给Windows的对话框和控件。官网地址https://pywinauto.readthedocs.io/en/latest/index.html环境准备可以通过命令行安装pywinauto:pi......
  • ChatGpt系列-模型介绍
    GPT4\GPT-3.5多模态模型,就是自然语言处理模型,可以理解文本,而且很像人,不是常见的指令型的假模型,是有人味的一个模型,主要接收文本输入并输出文本获得更好结果6项策略写下清晰的说明策略:要求模特采用角色(系统消息可用于指定模型在其回复中使用的角色,在我们落地应用时这个是必备......
  • [转]Linux下,WinSCP普通用户登录sftp后切换到root权限 教程
    --------------------------------------------------------------------------------------------------------有这个需求的原因:为了提高系统安全性,禁用了root的ssh登录,但是又想使用sftp工具,如winscp,对root下的一些文件进行修改.下面这个方法注释掉了sudoers配置项Defa......
  • 使用VuePress打造的LearnData知识库帮助我更好地学习和传播 - 从笔记到分享
    在当今快节奏的社会中,技术变化日新月异。作为一名技术博客站长,我深切感受到了学习和传播知识的重要性。为了更好地满足读者的需求,我决定采用VuePress搭建一个功能强大且易于维护的知识库平台,名为LearnData。本文将介绍我如何利用VuePress构建LearnData,并展示一些相关的代码示例。......
  • 从零开始构建动态网站 - 快速PHP开发
    在现代互联网时代,动态网站开发已成为许多技术人员关注的焦点。PHP作为一种广泛使用的服务器端脚本语言,具有简单易学、强大灵活等特点,成为了构建动态网站的首选之一。本文将带领您快速入门PHP开发,从零开始构建一个简单的动态网站,并提供相关的代码示例。PHP简介PHP(HypertextPrep......
  • 【pandas小技巧】--category类型补充
    category类型在pandas基础系列中有一篇介绍数据类型的文章中已经介绍过。category类型并不是python中的类型,是pandas特有的类型。category类型的优势那篇文章已经介绍过,当时只是介绍了如何将某个列的数据转换成category类型,以及转换之后给程序性能上带来的好处。本篇将补充介绍......
  • 06-中断详解
    目录一.中断原理二.NVIC详解一.中断原理1.中断过程和术语2.中断优先级概念3.中断优先级的表述方法4.中断源类型5.中断源的4种状态二.NVIC详解1.NVIC概念2.中断协作模型......
  • PLS-00103: 出现符号 ")"在需要下列之一时
    执行Oracle存储过程时,出现“PLS-00103:出现符号")"在需要下列之一时:”,Cause:java.sql.SQLException:ORA-06550:第22行,第4列:PLS-00103:出现符号")"在需要下列之一时:(-+casemodnewnotnull<anidentifier><adouble-quoteddelimited-identifier>......
  • SpringBoot 测试实践 - 1:常用的工具
    我自己接触到的一些商业或是开源的基于SpringBoot项目,它们大部分是没有测试代码的,test文件夹只有脚手架初始化生成的那个测试类,跟不同的开发聊到这个话题,发现他们中的大部分没有写测试的习惯,或者是觉得写测试代码麻烦,主要还是依赖测试工程师做黑盒的测试。只做黑盒测试的话有一......
  • [刷题笔记] [【LGR-155-Div.3】T4] Luogu P9572 「NnOI R2-T4」Colorful Days♪
    ProblemDescription有两个数组\(A,B\),我们可以将\(A\)数组无限次重复拼接。求最少需要多少次拼接使得拼接后的\(A,B\)的最长公共子序列最大。Analysis我们要学会从题目中找到一些信息,比如说本题的数据范围:对于\(100\%\)的数据,保证\(1\leqn,m,S_i,T_i\le10^6\),\(......