yande.re 342025 sample animal_ears bra cleavage n.jpg

一、一些准备工作:rclone和网盘授权

rclone的安装和google drive/onedrive 的访问授权见文章:

二、备份脚本编写及授权

创建脚本文件:

touch /home/Backup/backup.sh
vi /home/Backup/backup.sh

脚本文件内容示例如下,不需要的功能自行在前方加上#号注释掉,删除几天前的备份,数字自行修改即可。其他内容自行按需修改成自己的即可:

备份脚本文档示例

#!/bin/bash
# 定义GOOGLE DRIVE的备份目录
GD_PATH="GdriveBackup:Backup"

# 定义备份的目录及文件,不同的目录用空格分开
BACKUP_SRC="/home/wwwroot/omo.moe/usr"

# 定义临时文件存放目录
BACKUP_DST="/home/Backup"

# 设置MYSQL基本信息 
MYSQL_SERVER="localhost"
MYSQL_USER="root"
MYSQL_PASS="your password"

# 定义想要备份的数据库,多个数据库用空格分开
BACKUP_DATABASE="typecho_omo"

# 定义文件前缀名
NOW=$(date +"%Y.%m.%d")
OLD=$(date -d -5day +"%Y.%m.%d")

# 备份网站数据文件
zip -r $BACKUP_DST/auto_fileData_$NOW.zip $BACKUP_SRC

# 备份mysql数据库
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --databases $BACKUP_DATABASE > $BACKUP_DST/$NOW-auto-Databases.sql

# 使用rclone上传到google drive
rclone copy -v --stats 15s --bwlimit 40M $BACKUP_DST/ --include "$NOW-auto-Databases.sql" --include "auto_fileData_$NOW.zip" $GD_PATH

# 删除本地的临时文件
rm -f $BACKUP_DST/$NOW-auto-Databases.sql $BACKUP_DST/auto_fileData_$NOW.zip

# 删除5天前的备份
rclone delete $GD_PATH/ --include "$OLD-auto-Databases.sql" --include "auto_fileData_$OLD.zip"

# 删除回收站所有文件-可选、慎用
rclone delete GdriveBackup: --drive-trashed-only --drive-use-trash=false --verbose=2

使用chmod指令赋予执行权限:

chmod +x /home/Backup/backup.sh

三、创建自动备份任务并测试

使用 crontab 每天4点定时执行自动备份脚本:

crontab -e

复制以下内容粘贴并输入:wq保存:

0 4 * * * /bin/bash /home/backup/backup.sh >/dev/null 2>&1

手动测试看看脚本是否正确运行:

bash /home/Backup/backup.sh

backup.sh.png

时区设置为东八区:

timedatectl set-timezone Asia/Shanghai

重启定时任务:

service crond restart

重启系统日志:

service rsyslog restart

最后观察下系统日志尾巴状态,是否时区已经调整成功:

tail -f /var/log/cron

restart log.png

关于crontab格式详细说明,感兴趣的可以查阅:

crontab 格式详解

crontab -e 编辑
crontab -l 查看

#m h  dom mon dow  command

m分钟 0-59

h小时 0-23

dow天1-31

mon月 1-12

dow 星期 1-6 0表示星期天

command就是要执行的命令

除了这些固定值外,还可以配合星号(*),逗号(,),和斜线(/)来表示一些其他的含义:



星号         表示任意值,比如在小时部分填写*代表任意小时(每小时)

逗号         可以允许在一个部分中填写多个值,比如在分钟部分填写1,3表示一分钟或三分钟

斜线         一般配合 *使用,代表每隔多长时间,比如在小时部分填写*/2代表每隔两分钟。所以 */1和 *没有区别


1.* * * * *      date >> /home/postgres/time.log           # 每隔一分钟执行一次任务
2.0 * * * *      date >> /home/postgres/time.log         # 每小时的0点执行一次任务,比如6:00,10:00
3. 6,10 * 2 * *    date >>/home/postgres/time.log      # 每个月2号,每小时的6分和10分执行一次任务
4.*/3,*/5 * * * *  date >> /home/postgres/time.log       # 每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06



3* * * * /home/meng/hello.sh就是:每小时的03分执行/home/meng/下的hello.sh脚本*/59-17 * * mon,tue,wed,thur,fri wall "Are we there yet?"

53 * * * /usr/bin/apt-get update 就是每天的03:05执行“/usr/bin/apt-getupdate

*/5 9-17 * * mon,tue,wed,thur,fri wall "Arewe there yet?" 就是在所有的工作日的(9-17点)每过5分钟出现"Arewe there Yet?"

#每晚的21:30重启apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart

#每月1、10、22日
454 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

#每天早上6点10分
10 6 * * * date

#每两个小时
0*/2 * * * date

#晚上11点到早上8点之间每两个小时,早上8点
023-7/2,8* * * date

#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
011 4 * mon-wed date

#1月份日早上4点
04 1 jan * date

或者使用在线生成工具生成需要的定时任务:
online crontab

最后查看你的Google Drive或者Onedrive确认下运转是否正常:
auto rclone.png

附送同步其他网站内容的示例

#!/bin/bash
# 定义GOOGLE DRIVE的同步目录
GD_PATH="GdriveBackup:Backup"

# 定义本地需要同步的目录及文件,不同的目录用空格分开
RSYNC_DST="/home/wwwroot/omo.moe/usr"

# 定义同步源文件临时存放目录
RSYNC_SRC="/home/Rsync"

# 设置MYSQL基本信息 
MYSQL_SERVER="localhost"
MYSQL_USER="root"
MYSQL_PASS="your password"

# 定义想要同步的数据库,多个数据库用空格分开
RSYNC_DATABASE="typecho_omo"

# 定义文件前缀名
NOW=$(date +"%Y.%m.%d")

# 使用rclone从google drive下载当天同步数据到本地
rclone copy -v --stats 15s --bwlimit 40M $GD_PATH/ --include "$NOW-auto-Databases.sql" --include "auto_fileData_$NOW.zip" $RSYNC_SRC

#使用mysql -e指令同步数据库文件
mysql -u$MYSQL_USER -h$MYSQL_SERVER -p$MYSQL_PASS -e "USE $RSYNC_DATABASE;
source $RSYNC_SRC/$NOW-auto-Databases.sql;"

# 同步网站数据文件
unzip  -o -d $RSYNC_SRC  $RSYNC_SRC/auto_fileData_$NOW.zip&&\cp -rf $RSYNC_SRC/home/*  /home


#调整网站数据文件归属权限
chown -R nginx:nginx $RSYNC_DST

#删除临时文件数据
rm -rf $RSYNC_SRC/$NOW-auto-Databases.sql $RSYNC_SRC/auto_fileData_$NOW.zip $RSYNC_SRC/home

记得同步脚本相对你的备份脚本延后数分钟后自动运行,以免当天你的备份文件还未完全上传到网盘里。
例如:

10 4 * * * /bin/bash /home/Rsync/rsync.sh >/dev/null 2>&1

表示每天4点10分从你的网盘同步数据

Last modification:June 16, 2023
If you think my article is useful to you, please feel free to appreciate