linux 服务器自动备份脚本的方法(mysql、附件备份)

下面我将详细讲解 “linux 服务器自动备份脚本的方法(mysql、附件备份)”。

背景介绍

在日常的服务器维护中,备份是至关重要的一项工作。本文主要介绍如何使用linux自动备份脚本备份服务器上的mysql数据库和附件文件。

准备工作

在开始前需要先进行几个准备工作:

  • 确定备份的目录和数量
  • 安装必要的软件:rsync, mysqldump

编写备份脚本

在linux服务器上编写备份脚本,备份脚本的基本框架如下:

#!/bin/bash
#定义变量
dir=/data/backup        #备份文件存放目录
date=$(date +%Y%m%d)    #获取当前日期
user=root               #数据库用户名
pass=password           #数据库密码
db_name=db_name         #数据库名称

#创建备份文件存放目录
mkdir -p $dir/$date

#备份mysql数据库
mysqldump -u$user -p$pass --databases $db_name > $dir/$date/$db_name.sql

#同步附件文件
rsync -avzP --delete /path/to/attachs username@remote_host:$dir/$date/attachs

#删除7天前的备份文件
find $dir -ctime +7 -delete

其中:

  • dir是备份文件存放目录;
  • date是当前日期,用于区分备份文件;
  • user是mysql数据库用户名;
  • pass是mysql数据库密码;
  • db_name是需要备份的数据库名称;
  • mkdir -p命令用于创建备份文件存放目录;
  • mysqldump命令用于备份mysql数据库,将备份文件存放在指定目录中;
  • rsync命令用于将附件文件进行同步备份到远程服务器上;
  • find命令用于删除7天前的备份文件。

设置定时任务

为了实现自动备份,需要将备份脚本设置为定时任务。编辑crontab文件:

crontab -e

在文件末尾添加以下内容:

0 3 * * * /bin/bash /path/to/backup.sh > /dev/null 2>&1

其中:

  • 0 3 * * *表示每天凌晨3点执行备份任务;
  • /bin/bash表示执行备份脚本的解释器;
  • /path/to/backup.sh表示备份脚本所在的路径;
  • > /dev/null 2>&1表示将脚本的标准输出和标准错误输出都重定向到/dev/null。

示例

为了更好的理解备份脚本,这里提供两个示例:

示例1:备份wordpress博客

假设我们的wordpress博客目录为:/var/www/wordpress,附件存放目录为:/var/www/wordpress/wp-content/uploads。我们可以将备份脚本写成以下形式:

#!/bin/bash
dir=/data/backup
date=$(date +%Y%m%d)
user=root
pass=password
db_name=wordpress

mkdir -p $dir/$date

mysqldump -u$user -p$pass --databases $db_name > $dir/$date/$db_name.sql

rsync -avzP --delete /var/www/wordpress/wp-content/uploads username@remote_host:$dir/$date/uploads

find $dir -ctime +7 -delete

示例2:备份gitlab数据

假设我们的gitlab存储目录为:/var/opt/gitlab,在备份之前需要先停止gitlab服务,然后将备份脚本写成以下形式:

#!/bin/bash
dir=/data/backup
date=$(date +%Y%m%d)
user=root
pass=password
db_name=gitlabhq_production

mkdir -p $dir/$date

#停止 gitlab 服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

#备份数据库
mysqldump -u$user -p$pass --databases $db_name > $dir/$date/$db_name.sql

#备份 gitlab 存储目录
tar -czvf $dir/$date/gitlab.tar.gz /var/opt/gitlab

#同步附件文件
rsync -avzP --delete /var/opt/gitlab/uploads username@remote_host:$dir/$date/uploads

#启动 gitlab 服务
gitlab-ctl start

find $dir -ctime +7 -delete

总结

以上就是如何使用linux自动备份脚本备份服务器上的mysql数据库和附件文件的完整攻略。通过脚本自动备份可以有效保障服务器数据安全,并且提高了日常运维效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux 服务器自动备份脚本的方法(mysql、附件备份) - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • redis-cli 通过管道 –pipe 快速导入数据到redis中

    最近有个需求,需要把五千万条数据批量写入redis中,方法倒是有很多种!效率最高的就是通过redis-cl管道的方式写入 一:先看看命令 cat redis.txt | redis-cli -h 127.0.0.1 -a password – p 6379 –pipe 结构很简单 redis.txt 是你的文件名称 后面是你的客户端 二:redis.txt…

    Redis 2023年4月13日
    00
  • mysql与mssql的md5加密语句

    MySQL与MSSQL都提供了MD5加密函数。本文将详细讲解MySQL和MSSQL中的MD5加密函数的语法和用法。 MySQL中的MD5加密语句 在MySQL中,可以使用MD5()函数进行MD5加密。它的语法如下: MD5(str) 其中,str是要加密的字符串。 以下是一个MySQL的示例,演示如何使用MD5函数对字符串“password”进行加密: SE…

    database 2023年5月22日
    00
  • Weaviate和VoltDB的区别

    Weaviate和VoltDB都是目前流行的开源数据库,它们具有不同的特点和应用场景。下面对它们的区别进行详细讲解。 Weaviate和VoltDB的简介 Weaviate Weaviate是一款基于向量搜索的开源智能图谱系统。它是一种全文搜索系统,也是一种文本检索系统。Weaviate的主要特点是高效、快速、可扩展和可靠,可用于大量脱敏数据的搜索和分析。W…

    database 2023年3月27日
    00
  • 在php和MySql中计算时间差的方法详解

    当需要计算PHP和MySql中的时间差时,有几种常用的方法,包括使用PHP内置的日期/时间类、使用MySql内置的日期/时间函数以及通过将日期/时间转换为Unix时间戳来实现。下面将详细讲解这些方法的具体步骤。 使用PHP内置的日期/时间类计算时间差 使用PHP内置的日期/时间类,可以很容易地计算两个日期/时间之间的差值。具体步骤如下: 使用DateTime…

    database 2023年5月22日
    00
  • mysql字符集和校对规则(Mysql校对集)

    MySQL字符集和校对规则是指在MySQL中使用哪种字符编码来存储数据以及如何基于这些编码进行比较排序。它对于数据的存储和检索至关重要,因为字符集和校对规则的错误设置可能会导致数据损坏和查询错误。 字符集 MySQL中支持多种字符集,包括ASCII、Latin1、UTF-8、GBK等。其中,UTF-8是目前最流行的字符集,具有广泛的应用和良好的跨平台性。 在…

    database 2023年5月22日
    00
  • php将数据库中所有内容生成静态html文档的代码

    生成静态 HTML 文档是提高网站性能的一种有效方法。PHP 通过操作数据库生成并存储静态 HTML 文档,可以显著减轻服务器的负载,同时提高页面响应速度。下面是生成静态 HTML 文档的完整攻略。 步骤一:连接数据库 在 PHP 中可以使用 mysqli 或者 PDO 等扩展库来连接数据库。本示例中我们使用 mysqli 来连接数据库,并将连接信息存储在 …

    database 2023年5月19日
    00
  • Redis Eval Script

    简介 从Redis 2.6 版本开始,内嵌支持 Lua 环境。通过使用EVAL或EVALSHA命令可以使用 Lua 解释器来执行脚本。 EVAL和EVALSHA的使用是差不多的(下面有讲区别)。 EVAL命令 语法: EVAL script numkeys key [key …] arg [arg …] 。 script:Lua脚本 。numkeys…

    Redis 2023年4月13日
    00
  • SQL数据库存储过程示例解析

    下面我将为您详细讲解“SQL数据库存储过程示例解析”的完整攻略。 什么是SQL数据库存储过程? SQL数据库存储过程是在数据库中创建的可重用代码块。存储过程可以用于执行常规或复杂的数据库任务,包括数据操作、事务处理和错误处理等。存储过程可以通过SQL语句或者应用程序调用进行执行。 如何创建SQL数据库存储过程? 创建SQL数据库存储过程的步骤如下: 打开SQ…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部