一个实用的一键备份脚本:backup.sh

玩过Emby的朋友都知道,如果你的媒体库很大,刮削是个很费劲的事,尤其是一个正常运行一段时间的Emby服务。而刮削数据、观看记录数据以及常规配置都保存在数据库里,所以,定时备份Emby数据库成为了一个很重要的工作。

一般来说,你可以手工备份,如果你是按照这篇文章介绍的,使用Docker部署的Emby服务,可以使用如下命令手工备份数据库,再手工上传到比如已用RClone挂载的Google Drive里。当然,其实是可以上传到任何已用RClone挂载的磁盘。

#打包并压缩
tar -zcvf config.tar.gz /root/emby/config
#拷贝备份
rsync -avPh config.tar.gz 已用Rclone挂载的目录
或
rclone copy -P config.tar.gz [Rclone的盘名,如:GD]:[盘中的目录,如:/Temp]

 

当然,如果能定时备份数据库并自动上传到GD,能省很多事。于是,今天推荐一款很实用的一键备份脚本:来自秋水逸冰大神的backup.sh。当然这个脚本,还可以备份所有你想备份的文件。
这个脚本有如下几个特点:

 

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

 

安装过程分为三步:

 

一、拉取和赋权

用root账户ssh登录服务器,然后执行

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

 

二、配置

不出意外的话,你会在root目录下看到backup.sh文件,然后

nano backup.sh

 

开始配置。
我简单讲几个配置技巧,每个人的需求可能不同,而backup.sh文件里和这里也对每个参数有比较清晰的注释,相信有一定运维基础都能懂。

 

1、ENCRYPTFLG

这是压缩备份时的加密参数,对安全性要求较高的可以保留初始化的true,但我只是备份Emby数据库,我就改成了false。比如:

ENCRYPTFLG=false

 

2、BACKUPPASS

这个参数是加密备份时的密码,因为我已经选择不加密,所以这个参数就随便填了一串字符,反正也用不上,但如果不填,应该也是没问题的。比如:

BACKUPPASS="hello_bitch"

 

3、LOCALDIR

这里填写本地保存备份文件的目录地址。比如:

LOCALDIR="/root/backups/"

 

4、TEMPDIR

这里填写备份过程中的临时目录地址。比如:

TEMPDIR="/root/backups/temp/"

 

5、LOGFILE

这里填写日志文件地址。比如:

LOGFILE="/root/backups/backup.log"

 

6、MYSQL_ROOT_PASSWORD 

这里填写MySQL/MariaDB/Percona 的 root 用户密码。如果不备份数据库则留空。

 

7、MYSQL_DATABASE_NAME

这里填写指定 MySQL/MariaDB/Percona 的数据库名,留空则是备份所有数据库。

 

8、BACKUP

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

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

 

9、LOCALAGEDAILIES

备份文件保留的天数,默认是7天,我改成了1,反正备份完就传到GD了,而且我把脚本远程删除GD文件的权限关闭了。

 

10、DELETE_REMOTE_FILE_FLG

远程删除GD文件的权限,建议配置为:

DELETE_REMOTE_FILE_FLG=false

 

11、RCLONE_NAME

这个很关键,因为将备份上传到GD实际上是利用在机器上已经配置好的RClone完成的,这里填写你希望保存备份文件的在RClone里已命名的盘符名。比如:

RCLONE_NAME="my-gd-backup"

 

12、RCLONE_FOLDER

这里填写盘符里的目录地址,比如:

RCLONE_FOLDER="/Data/emby"

 

13、RCLONE_FLG

这里是选择是否用RClone上传的选项,需要打开,比如:

RCLONE_FLG=true

 

当然,这个脚本也支持FTP备份,你可以配置FTP相关信息,将备份文件用FTP的方式传到其他机器,比如家里的NAS之类。

 

14、TARFILE

如果你不喜欢默认的备份压缩包文件名,可以手动修改。找到TARFILE,修改为比如:

TARFILE="${LOCALDIR}"emby_"${BACKUPDATE}".tgz

 

至此就完配置文件填写了。

 

三、设置定时任务

1、如果不设置定时任务,可以通过手动运行如下命令实现备份:

./backup.sh

 

2、定时任务
可以使用cron来配置定时任务,如何配置cron网上有一堆教程,比如:

nano /etc/crontab

 

接着在最后一行加入一句

30 5 * * * root bash /root/backup.sh

 

意思就是每天5:30执行一次备份,关于crontab的时间表达式,也可以用这个工具来快速生成。

 

四、调整服务器时区@2021.05.09

如果服务器不在中国,建议调整时区

查看时区

date

 

若不是CST,则

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

date

 

理论上应该为CST了。若还不是,则

ntpdate stdtime.sinica.edu.tw

 

若这行代码无效,则安装ntpdate后重试

CentOS

yum -y install ntpdate ntp

 

Ubuntu / Debian

sudo apt-get install -y ntpdate ntp

 

理论上就应该OK了。若还不行,通常是服务商禁止修改时区,请联系服务商修改。

 

 

打完收工!

 

阅读剩余
THE END