一个实用的一键备份脚本: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了。若还不行,通常是服务商禁止修改时区,请联系服务商修改。