用的是大佬的 https://teddysun.com/469.html
Contents
hide
特点
1、支持 MySQL/MariaDB/Percona 的数据库全量备份或选择备份;
2、支持指定目录或文件的备份;
3、支持加密备份文件(需安装 openssl 命令,可选)
4、支持上传至 Google Drive(需先安装 rclone 并配置,可选);
5、支持在删除指定天数本地旧的备份文件的同时,也删除 Google Drive 上的同名文件(可选)。
安装
apt install -y openssl unzip
wget --no-check-certificate https://github.com/teddysun/across/raw/master/backup.sh
chmod +x backup.sh
修改主要的变量 在 #### END OF CONFIG 这句之前的所有变量都值得过一下
# 如果需要加密的话
# Encrypt flag (true: encrypt, false: not encrypt)
ENCRYPTFLG=true
# WARNING: KEEP THE PASSWORD SAFE!!!
# The password used to encrypt the backup
# To decrypt backups made by this script, run the following command:
# openssl enc -aes256 -in [encrypted backup] -out decrypted_backup.tgz -pass pass:[backup password] -d -md sha1
BACKUPPASS="JustForThisScript_Pa55w0rd1_LP1RC"
# Directory to store backups
LOCALDIR="/opt/backups/"
# Temporary directory used during backup creation
TEMPDIR="/opt/backups/temp/"
# File to log the outcome of backups
LOGFILE="/opt/backups/backup.log"
# OPTIONAL: If you want backup MySQL database, enter the MySQL root password below
# 从宝塔上可以找到
MYSQL_ROOT_PASSWORD="Mysql_Root_Pass55w0rd1"
# Below is a list of MySQL database name that will be backed up
# If you want backup ALL databases, leave it blank.
MYSQL_DATABASE_NAME[0]=""
# Below is a list of files and directories that will be backed up in the tar backup
# For example:
# File: /data/www/default/test.tgz
# Directory: /data/www/default/test
BACKUP[0]="/www"
# BACKUP[0]="/another_folder_to_backup"
# Number of days to store daily local backups (default 7 days)
LOCALAGEDAILIES="3650"
# Rclone remote name
RCLONE_NAME="od_xyz_e3m1024"
# Rclone remote folder name (default "")
RCLONE_FOLDER="_bak_bwh229"
# Upload to FTP server flag (true: upload, false: not upload)
FTP_FLG=false
# Upload to RCLONE server flag (true: upload, false: not upload)
RCLONE_FLG=true
# FTP server
# OPTIONAL: If you want upload to FTP server, enter the Hostname or IP address below
FTP_HOST=""
# FTP username
# OPTIONAL: If you want upload to FTP server, enter the FTP username below
FTP_USER=""
# FTP password
# OPTIONAL: If you want upload to FTP server, enter the username's password below
FTP_PASS=""
# FTP server remote folder
# OPTIONAL: If you want upload to FTP server, enter the FTP remote folder below
# For example: public_html
FTP_DIR=""
看到本地的文件是存到 – LOCALDIR=”/opt/backups/”,而且是保留了3650天的数据(LOCALAGEDAILIES=”3650″),原因是我把无限网盘Google Drive加载到本地(参考本馆档案),然后建了个软连接。同时,又会远程复制到我的E3 MSDN OneDrive – RCLONE_NAME=”od_xyz_e3m1024″.
这样我就拥有了两套远程备份。
ln -s /root/gd_stanford/_bak/bwh229 /opt/backups
Crontab – 自动执行
crontab -e
# 加入
# run every wed 0110am
10 1 * * 3 /root/backup.sh
解密解压
openssl enc -aes256 -in [ENCRYPTED BACKUP] -out decrypted_backup.tgz -pass pass:[BACKUPPASS] -d -md sha1
tar -zxPf [DECRYPTION BACKUP FILE]
# 解释一下参数 -P:
#tar 压缩文件默认都是相对路径的。加个 -P 是为了 tar 能以绝对路径压缩文件。因此,解压的时候也要带个 -P 参数。