站点(含数据库)备份脚本

#!/usr/bin/env bash

# +-------------------------------------------------------------------------
# | 站点(含数据库)备份脚本
# | 备注:因需导出数据库,故须确保本地能免密码登录MySQL
# +-------------------------------------------------------------------------



#========== 以下内容请根据实际情况设置-开始 ==========#

# 备份文件保存目录
backup_dir='/backup'

# 站点目录
site_dir='/wwwroot/www.domain.com'

# 数据库名称
database='www_domain_com'

# 额外目录或文件
# 说明:有些和站点有关的目录或文件需要备份,但这些目录或文件又不在站点目录里面的可以在这里设置
# 格式:additional=('目录1' '目录2' '文件1')
additional=()

# mysqldump路径(用于导出数据库)
mysqldump='/program/mysql/bin/mysqldump'

#========== 以下内容请根据实际情况设置-结束 ==========#



# 当前日期,格式:yyyy-mm-dd
date=`date +%Y-%m-%d`

# 把站点目录整个复制到备份文件保存目录
cp -r $site_dir $backup_dir

# 导出数据库
mkdir $backup_dir/$(basename $site_dir)/.database
$mysqldump $database > $backup_dir/$(basename $site_dir)/.database/$database.sql

# 备份额外目录或文件
mkdir $backup_dir/$(basename $site_dir)/.additional
for i in ${additional[@]}
do
    cp -r $i $backup_dir/$(basename $site_dir)/.additional
done

# 进入备份文件保存目录
cd $backup_dir

# 把站点目录压缩打包,使用--remove-files参数可以在压缩打包完成后自动删除源文件
tar -zcPf $backup_dir/$(basename $site_dir).$date.tar.gz $(basename $site_dir) --remove-files

# 删除备份文件的所有权限
chmod 000 $backup_dir/$(basename $site_dir).$date.tar.gz

# 删除当前站点15天前的备份
find $backup_dir -mtime +15 -name "*"$(basename $site_dir)"*" -exec rm -rf {} \;

Copyright © 2023 码农人生. All Rights Reserved