【教程】服务器数据一键备份脚本 backup.sh(新增支持COS/阿里云盘)

1、一键备份脚本 backup.sh 功能特点

  1. 支持 MySQL/MariaDB/Percona 的数据库全量备份或选择备份;
  2. 支持指定目录或文件的备份;
  3. 支持加密备份文件(需安装 openssl 命令,可选);
  4. 支持上传至 Google Drive(需先安装 rclone 并配置,可选);
  5. 支持上传至 腾讯云COS(需先安装 coscmd 并配置,可选);
  6. 支持上传至 阿里云盘(需先安装 aliyunpan 并配置,可选);
  7. 支持上传至 FTP(可选);
  8. 支持在删除指定天数本地旧的备份文件的同时,也删除 Google Drive/COS/阿里云盘 上的同名文件(可选)。

2、修改并配置脚本

(1)关于变量名的一些说明:

  • 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/COS/AliyunDrive/FTP 上备份文件的 FLG,true 为删除,false 为不删除)
  • RCLONE_NAME (设置 rclone config 时设定的 remote 名称,务必要指定)
  • RCLONE_FOLDER (指定备份时设定的 remote 的目录名称,该目录名在 Google Drive 不存在时则会自行创建。默认为空,也就是根目录)
  • RCLONE_FLG (上传本地备份文件至 Google Drive 的 FLG,true 为上传,false 为不上传)
  • COS_FOLDER (指定备份时设定的 remote 的目录名称,该目录名在 COS 不存在时则会自行创建。默认为空,也就是根目录)
  • COS_FLG (上传本地备份文件至 COS 的 FLG,true 为上传,false 为不上传)
  • ALI_FLG (上传本地备份文件至 AliyunDrive 的 FLG,true 为上传,false 为不上传)
  • ALI_FOLDER (指定备份时设定的 remote 的目录名称,__该目录名在 AliyunDrive 不存在时会错误!!!需要手动创建!__)
  • ALI_PY_FILE (指定 aliyunpan 的 main.py 路径)
  • ALI_REFRESH_TOKEN (阿里云盘的 REFRESH_TOKEN )
  • FTP_FLG (上传文件至 FTP 服务器的 FLG,true 为上传,false 为不上传)
  • FTP_HOST (连接的 FTP 域名或 IP 地址)
  • FTP_USER (连接的 FTP 的用户名)
  • FTP_PASS (连接的 FTP 的用户的密码)
  • FTP_DIR (连接的 FTP 的远程目录,比如: public_html)

(2)一些注意事项的说明:

  1. 脚本需要用 root 用户来执行;
  2. 脚本需要用到 openssl 来加密,请事先安装好;
  3. 脚本默认备份所有的数据库(全量备份);
  4. 备份文件的解密命令如下:
openssl enc -aes256 -salt -pbkdf2 -iter 200000 -in [ENCRYPTED BACKUP] -out decrypted_backup.tgz -pass pass:[BACKUPPASS] -d -md sha256
  1. 备份文件解密后,解压命令如下:
tar -zxPf [DECRYPTION BACKUP FILE]

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

3、配置 rclone 命令(可选)

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

你可以用以下的命令来安装 rclone,以 RedHat 系举例,记得要先安装 unzip 命令。

yum -y install unzip && wget -qO- https://rclone.org/install.sh | bash

然后,运行以下命令开始配置:

rclone config

参考这篇文章,当设置到 Use auto config? 是否使用自动配置,选 n 不自动配置,然后根据提示用浏览器打开 rclone 给出的 URL,点击接受(Accept),然后将浏览器上显示出来的字符串粘贴回命令行里,完成授权,然后退出即可。参考文章里有挂载的操作,记得这里不需要挂载 Google Drive。

4、配置 coscmd 命令(可选)

(1)通过 pip 安装

执行pip命令进行安装:

pip install coscmd

安装成功之后,用户可以通过-v或者–version命令查看当前的版本信息。

(2)pip 更新

安装完成后,执行以下命令进行更新:

pip install coscmd -U
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值