备份数据库和网站目录并发送到邮箱脚本

 原文地址:https://blog.ismeoh.com/archives/38.html

#!/bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin::/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin;

export PATH

export LANG=C

# 系统文件备份路径

basedir=/backup/daily

# 数据库信息

# user=root

# passwd=xxxx

# 定义 mysql 备份路径

# mysql_db_bak=$basedir/mysql_db_bak/$(date +%F_%H%M)

# if [ ! -d "$mysql_db_bak" ];

#  then

#   mkdir -p $mysql_db_bak

# fi

  

# 定义网站备份路径

site_src_bak=$basedir/site_src_bak/$(date +%F_%H%M)

if [ ! -d "$site_src_bak" ];

 then

  mkdir -p $site_src_bak

fi

# 备份文件

# mysql_bak=$mysql_db_bak/backup.sql.gz

site_bak=$site_src_bak/$(date +%F_%H%M)-site.tar.bz2

# 备份 MySQL (数据库目录在 /usr/local/mysql)

# mysqldump -u$user -p$passwd --opt --skip-lock-tables --flush-logs --databases mysql_( 数据库名称,可以是多个,空格隔开) | gzip > $mysql_bak

# 备份源代码:

cd /usr/local/nginx

tar -jpcf $site_bak html

# 定义备份文件作为附件的数组

# 备份数据库和源码用下面数组

# all_bak=($mysql_bak $site_bak)

all_bak=$site_bak

  

# 邮件标题不要有空格,否则后续 echo 输出会以空格为分割,发送 N 篇邮件

mail_subject="$(date +%F-%H%M)-Website-daily-backup"

# 邮件内容

mail_content_mysql="mysql_daily_backup at $(date +%F-%H%M)"

mail_content_site="website_daily_backup at $(date +%F-%H%M)"

# 定义内容数组

# mail_content=("$mail_content_mysql" "$mail_content_site")

mail_content="$mail_content_site"

# 邮件地址

mail_address=""

  
  

# 发送附件

# 如果是同时备份数据库和网站源码,用下面

# for((i=0; i!=${#all_bak[@]}; ++i))

# {

#  echo ${mail_content[i]} | mutt -s $mail_subject $mail_address -a ${all_bak[i]}

# }

# 只备份网站源码

echo $mail_content | mutt -s $mail_subject $mail_address -a $all_bak

  

# 清理 mutt 临时文件

cat /dev/null > ~/sent

  

#删除 3 天前备份文件夹

delfile=`find /backup/daily/site_src_bak -type d -name "*-*" -mtime +3`

if [ $delfile ];

then

find /backup/daily/site_src_bak -type d -name "*-*" -mtime +3 -exec rm -rf {} \;

fi

你可能感兴趣的:(脚本)