#!/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 © 2024 码农人生. All Rights Reserved