热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shell编程实战之网站文件及数据库文件的备份-linux运维

文件备份的重要性不言而喻,定期备份是个好习惯,不管是网站文件还是日常生活的照片、视频等。不然等到数据丢失了,你就能体会数据找不回来的那种绝望了。
文件备份的重要性不言而喻,定期备份是个好习惯,不管是网站文件还是日常生活的照片、视频等。不然等到数据丢失了,你就能体会数据找不回来的那种绝望了。笔者亲身经历过几次,最严重的一次是个人博客7个多月的数据全部丢失,那真是种欲哭无泪的感觉。

今天和大家来讲下如何在服务器端编写备份网站目录及数据库文件的脚本。首先需要先补充几个知识:

  • tar命令,文件的压缩打包

  • find命令,查找文件

  • bzip2,文件压缩

为了节省空间,我们经常会对目录文件做压缩并打包的操作。bzip2命令可以对文件进行压缩,但它不能对目录进行压缩,对目录则可以使用tar命令压缩打包。

因为数据库文件就是一个单独的sql文件,所以可以使用bzip2命令对其压缩。

mysqldump -u用户名 -p密码 --all-databases | bzip2 > 备份目录/文件名

而网站文件则需要使用tar命令来进行压缩。

tar -jcpf 备份目录/文件名  需备份的目录

虽然我们每天都会进行备份,但是我们只想保存最近七天的备份记录,7天前的备份数据自动删除。这里我们就需要使用find命令来找出7天前的备份文件,然后将其删除。

find 备份目录 -mtime +7 -type f -exec rm -f {} \;

下面开始正式编写shell脚本。首先,我们需要定义备份目录,如果备份目录不存在,则需要先创建目录。

WWW_DIR=/home/wwwroot
BAK_DIR=/root/bak

if [ ! -d $BAK_DIR ];then
    mkdir $BAK_DIR
fi

接下来 ,就是进行网站目录以及数据库文件的备份了

tar -jcpf $BAK_DIR/www_$(date +%Y%m%d).tar.bz2 $WWW_DIR 2>/dev/null
mysqldump -uroot -p123456 --all-databases | bzip2 > $BAK_DIR/all_database_$(date +%Y%m%d).sql

最后,只要删除七天前的备份数据即可

find $BAK_DIR -type f -mtime +7 -exec rm -f {} \;

下面贴出完整代码:

#!/bin/bash
# 备份数据库文件及网站文件

WWW_DIR=/home/wwwroot
BAK_DIR=/root/bak

if [ ! -d $BAK_DIR ];then
    mkdir $BAK_DIR
fi

# 备份网站文件及数据库文件
tar -jcpf $BAK_DIR/www_$(date +%Y%m%d).tar.bz2 $WWW_DIR 2>/dev/null
mysqldump -uroot -pGuiyuan#520@1314 --all-databases | bzip2 > $BAK_DIR/all_database_$(date +%Y%m%d).sql 

# 删除7天前的备份数据
find $BAK_DIR -type f -mtime +7 -exec rm -f {} \;

最后,还是希望大家能养成备份的习惯。除了服务器上的每日备份,另外还是建议一个星期,从服务器上拷贝一份数据到本地磁盘,保证数据万无一失。

以上就是shell编程实战之网站文件及数据库文件的备份的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
author-avatar
sylvia
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有