1、一键备份脚本 backup.sh 功能特点
- 支持 MySQL/MariaDB/Percona 的数据库全量备份或选择备份;
- 支持指定目录或文件的备份;
- 支持加密备份文件(需安装 openssl 命令,可选);
- 支持上传至 Google Drive(需先安装 rclone 并配置,可选);
- 支持上传至 腾讯云COS(需先安装 coscmd 并配置,可选);
- 支持上传至 阿里云盘(需先安装 aliyunpan 并配置,可选);
- 支持上传至 FTP(可选);
- 支持在删除指定天数本地旧的备份文件的同时,也删除 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)一些注意事项的说明:
- 脚本需要用 root 用户来执行;
- 脚本需要用到 openssl 来加密,请事先安装好;
- 脚本默认备份所有的数据库(全量备份);
- 备份文件的解密命令如下:
openssl enc -aes256 -salt -pbkdf2 -iter 200000 -in [ENCRYPTED BACKUP] -out decrypted_backup.tgz -pass pass:[BACKUPPASS] -d -md sha256
- 备份文件解密后,解压命令如下:
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