服务器备份脚本

4 months ago

周期性执行定时任务备份服务器上的数据,并上传到Dropbox异地备份。

服务器定时备份 并上传到Dropbox##

上传Dropbox 需结合 Dropbox-Uploader 使用

先运行dropbox_uploader.sh填写access token##

access token 需在 Dropbox Developer 注册Application后获取

数据库配置文件##

/data/db.cnf

[client]
host=localhost
user=root
password=******

备份脚本##

/data/backup.sh


#!/bin/bash
#source /etc/profile

# 备份存放目录
BACKUP_DIR=/mnt/ssd/backups

# 数据库配置文件
DB_CONFIG=/data/db.cnf

#Dropbox应用内文件夹名称
DROPBOX_DIR=""


# 进入到备份文件夹
cd $BACKUP_DIR
# 创建存放备份文件和数据库的文件夹,并修改权限为777
mkdir -m 777 -p $BACKUP_DIR/backup_$(date +"%Y%m%d")

# 将需要备份的文件复制到备份文件夹内
cp -r /data $BACKUP_DIR/backup_$(date +"%Y%m%d")/data

# 拷贝 Nginx 配置文件
cp -r /usr/local/nginx/conf $BACKUP_DIR/backup_$(date +"%Y%m%d")/nginx_config

# 导出数据库到备份文件夹内
/usr/local/mysql/bin/mysqldump --defaults-extra-file=$DB_CONFIG --all-databases > $BACKUP_DIR/backup_$(date +"%Y%m%d")/database.sql

# 压缩存放备份文件和数据库的文件夹
tar -zcvf ./backup_$(date +"%Y%m%d").tar.gz ./backup_$(date +"%Y%m%d")

# 删除备份所创建的临时文件夹
rm -rf $BACKUP_DIR/backup_$(date +"%Y%m%d")

# 删除7天前的备份
rm -rf $BACKUP_DIR/backup_$(date -d -7day +"%Y%m%d").tar.gz

# 上传打包好的文件到Dropbox
/data/dropbox_uploader.sh upload "$BACKUP_DIR/backup_$(date +"%Y%m%d").tar.gz" "$DROPBOX_DIR/backup_$(date +"%Y%m%d").tar.gz"
if [ $? -eq 0 ];then
     echo "上传完成"
else
     echo "上传失败,重新尝试"
fi

# 删除Dropbox上15天前的备份
/data/dropbox_uploader.sh delete "$DROPBOX_DIR/backup_$(date -d -15day +"%Y%m%d").tar.gz"

使用crontab创建定时任务##

corn 使用方法 见菜鸟教程

crontab -e
00 01 * * * /data/backup.sh

完成

评论

Instagram @dingdangnao