转载于 秋水逸冰的blog

转载自:秋水逸冰 » 一键备份脚本backup.sh

做网站最重要的是什么?数据!数据,是网站之本,备份,是每一个站长都应该重视的事情。但同时,备份也是一件繁琐和重复的事情。所以,这些事情,肯定能做到自动化的。
下面来介绍一下这个一键备份脚本 backup.sh。

总结一下 backup.sh 特点:

1、支持 MySQL/MariaDB/Percona 的数据库全量备份或选择备份;
2、支持指定目录或文件的备份;
3、支持加密备份文件(需安装 openssl 命令,可选);
4、支持上传至 Google Drive(需先安装 gdrive 并配置,可选);
5、支持在删除指定天数本地旧的备份文件的同时,也删除 Google Drive 上的同名文件(可选)。

2016 年 8 月 21 日更新:
1、新增:指定 MySQL/MariaDB 的数据库名进行备份,可以同时指定多个;
2、新增:删除指定天数本地旧的备份文件。
2016 年 9 月 8 日更新:
1、新增:删除指定天数本地旧的备份文件的同时,可选删除 Google Drive 上的同名文件。
2016 年 11 月 29 日更新:
1、新增:上传备份文件到 FTP 选项;
2、新增:删除指定天数本地旧的备份文件的同时,可选删除 Google Drive 及 FTP 上的同名文件。

教程模式开启:

1、下载该脚本并赋予执行权限

wget --no-check-certificate https://github.com/teddysun/across/raw/master/backup.sh
chmod +x backup.sh

2、修改并配置脚本

请使用 vim 或 nano 等工具来修改。

关于变量名的一些说明:

ENCRYPTFLG (加密FLG,true 为加密,false 为不加密,默认是加密)
BACKUPPASS (加密密码,重要,务必要修改)
LOCALDIR (备份目录,可自己指定)
TEMPDIR (备份目录的临时目录,可自己指定)
LOGFILE (脚本运行产生的日志文件路径)
MYSQL_ROOT_PASSWORD (MySQL/MariaDB/Percona 的 root 用户密码)
MYSQL_DATABASE_NAME (指定 MySQL/MariaDB/Percona 的数据库名,留空则是备份所有数据库)
※ MYSQL_DATABASE_NAME 是一个数组变量,可以指定多个。举例如下:

MYSQL_DATABASE_NAME[0]="phpmyadmin"
MYSQL_DATABASE_NAME[1]="test"

BACKUP (需要备份的指定目录或文件列表,留空就是不备份目录或文件)
※ BACKUP 是一个数组变量,可以指定多个。举例如下:

BACKUP[0]="/data/www/default/test.tgz"
BACKUP[1]="/data/www/default/test/"
BACKUP[2]="/data/www/default/test2/"

LOCALAGEDAILIES (指定多少天之后删除本地旧的备份文件,默认为 7 天)
DELETE_REMOTE_FILE_FLG (删除 Google Drive 或 FTP 上的备份文件 FLG,true 为删除,false 为不删除)

FTP_FLG (上传文件至 FTP 的 FLG,true 为上传,false 为不上传)
FTP_HOST (连接的 FTP 域名或 IP 地址)
FTP_USER (连接的 FTP 的用户名)
FTP_PASS (连接的 FTP 的用户的密码)
FTP_DIR (连接的 FTP 的远程目录,比如: public_html)

一些注意事项的说明:

1)脚本需要用 root 用户来执行;
2)脚本需要用到 openssl 来加密,请事先安装好;
3)脚本默认备份所有的数据库(全量备份);
4)备份文件的解密命令如下:

openssl enc -aes256 -in [ENCRYPTED BACKUP] -out decrypted_backup.tgz -pass pass:[BACKUPPASS] -d -md sha1

5)备份文件解密后,解压命令如下:

tar -zxPf [DECRYPTION BACKUP FILE]

解释一下参数 -P:
tar 压缩文件默认都是相对路径的。加个 -P 是为了 tar 能以绝对路径压缩文件。因此,解压的时候也要带个 -P 参数。

3、配置 gdrive 命令

gdrive 是一个命令行工具,用于 Google Drive 的上传下载等操作。官网网站:
https://github.com/prasmussen/gdrive

当然,你可以用以下的命令来安装 gdrive。

x86_64(64位):

wget -O /usr/bin/gdrive http://dl.lamp.sh/files/gdrive-linux-x64
chmod +x /usr/bin/gdrive

i386(32位)

wget -O /usr/bin/gdrive http://dl.lamp.sh/files/gdrive-linux-386
chmod +x /usr/bin/gdrive

然后,运行以下命令开始获取授权:

gdrive about

根据提示用浏览器打开 gdrive 给出的 URL,点击接受(Accept),然后将浏览器上显示出来的字符串粘贴回命令行里,完成授权。

4、运行脚本开始备份

./backup.sh

脚本默认会显示备份进度,并在最后统计出所需时间。
如果你想将脚本加入到 cron 自动运行的话,就不需要前台显示备份进度,只写日志就可以了。
这个时候你需要稍微改一下脚本中的 log 函数。

log() {echo "$(date "+%Y-%m-%d %H:%M:%S")" "$1"echo -e "$(date "+%Y-%m-%d %H:%M:%S")" "$1" >> ${LOGFILE}
}

改为:

log() {echo -e "$(date "+%Y-%m-%d %H:%M:%S")" "$1" >> ${LOGFILE}
}

关于如何使用 cron 自动备份,这里就不再赘述了 以 CentOS 6 来举例说明。

修改文件 /etc/crontab,内容如下:

SHELL=/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
MAILTO=root
HOME=/root# For details see man 4 crontabs# 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
30  1  *  *  * root bash /root/backup.sh

以上表示,每天凌晨 1 点 30 分,root 用户执行一次 backup.sh 脚本。
注意:
一定要修改其中的 PATH 和 HOME 变量的值。
尤其是 HOME 变量,gdrive 命令能否正确执行,是要依赖于其配置文件的。默认用 root 配置的话,其配置文件夹应该是 /root/.gdrive/ ,所以要更改 HOME 的值。

最后,欢迎交流和提出意见。

转载请注明:秋水逸冰 » 一键备份脚本backup.sh

一键备份脚本backup.sh相关推荐

  1. 一键备份脚本 backup.sh

    做网站最重要的是什么?数据!数据,是网站之本,备份,是每一个站长都应该重视的事情.但同时,备份也是一件繁琐和重复的事情.所以,这些事情,肯定能做到自动化的. 下面来介绍一下这个一键备份脚本 backu ...

  2. 一键测试脚本bench.sh

    转载于 秋水逸冰的blog 转载自:秋水逸冰 » 一键测试脚本bench.sh 经过几个版本的演化,一键测试脚本 bench.sh 已经几乎全面适用于各种 Linux 发行版的网络(下行)和 IO 测 ...

  3. sqlite3-windows 备份脚本 backup.bat

    sqlite3-windows 备份脚本 backup.bat 注:其中 sqlite3 .gzip 需要手动下载,放到db目录, 下载地址:     sqlite3.exe https://www. ...

  4. 树莓派一键备份脚本 备份为img镜像 可用于量产 可选备份位置 适配Debian/Ubuntu

    2019-02-24 by 崔斐然 2019-02-28补充: 鉴于备份过程可能花费大量时间,建议使用ssh操作的同学安装screen管理会话,避免因网络波动造成ssh掉线任务失败.参考我的另一篇博文 ...

  5. MySQL一键备份脚本(温备)

    文章目录 1. 全库备份 2. 增量备份 3. 开启定时任务 1. 全库备份 vim all_db_bak.sh#!/bin/bash #MySQL 全库备份PATH="/usr/local ...

  6. oracle备份数据脚本,oracle数据库自动备份脚本

    ::通过exp命令导出远程机器(192.168.2.1)上指定服务(orcl)指定用户(pmis)及密码(pmis)的数据 ::运行该脚本的机器必须安装oracle @echo off @echo [ ...

  7. svn数据库自动备份脚本

    创建一个存放备份数据的路径 mkdir /data/svnbak -p 采用shell脚本的方式实现自动备份 #vim backup.sh #!/bin/bash log="/data/sv ...

  8. 百度网盘自动备份php,服务器自动备份脚本上传至百度云存储

    一直以为自己管理的服务器不会出问题,没想到昨天由于误操作把数据库整个目录给删了,罪过... 有些数据我一直没在意,等到失去的时候才发现他们有多重要... 赶紧补上备份脚本 #!/bin/sh BACK ...

  9. python部署脚本_vsftp一键部署脚本

    vsftp一键创建脚本#!/bin/sh #OS: Centos7.2 #filename: auto_install_vsftp.sh users=/etc/vsftpd/vftpuser.txt  ...

最新文章

  1. 【swjtu】数据结构实验7_Huffman编码
  2. java WebSocket实现一对一消息和广播消息Demo
  3. HEX、DEC、OCT和BIN的解释
  4. python xlwt模块生成excel文件并写入数据 xlrd读取数据
  5. IL应用之——用IL分析接口的本质
  6. 快速掌握 10 个 HTML5 必备技巧
  7. 十进制、二进制、八进制、十六进制转换
  8. 800道Python习题,花了一个月终于整理出来了,挑战一下自己能做对多少题
  9. 指数函数图像怎么画?
  10. VScode 光标乱跳
  11. 北京大学 计算机辅助翻译专业,北京大学计算机辅助翻译专业招生介绍
  12. Packet Tracer 思科模拟器入门教程 之十一 路由器静态路由配置
  13. 超全,整理了18种常用数据分析模型和方法
  14. zcmu-1359 NBA (水题)
  15. C++实现拼音字符串切分的函数
  16. 玩玩python之两个猥琐的爬虫
  17. win7怎么看服务器芯片,Win7如何查看CPU使用率?Win7CPU使用率的查看方法
  18. 解决方案:关于C2039,XXX不是XXX的成员的奇怪报错
  19. 智能公交系统出行越来越便捷
  20. oracle DG模式搭建详解

热门文章

  1. 树莓派为什么涨价了?
  2. 超级机器人大战阿尔法php,超级机器人大战α流程攻略 机战Alpha外传分支多线路攻略(9)...
  3. 2021自动化保研夏令营汇总
  4. 台式计算机系统重新安装软件,教你台式机如何重装系统
  5. 名著赏读 | 《教育思想的演进》读书报告
  6. Pygame 实战(行动代号(单机版)):(二). 游戏编程
  7. 抖音直播带货数据在哪里看?有哪些考核指标?
  8. 帝国搜索模板不支持php,解决帝国CMS搜索模板不支持灵动标签的方法
  9. javascript正则表达式-姜威-专题视频课程
  10. 「津津乐道播客」#197. 拼娃时代:聊聊帝都拼娃史