本文是专题:建站日记中的第10篇,共12篇

将网站数据库备份后留在本地硬盘上,并不是一个可靠的方案。我就把压缩后的文件发送到电子邮件信箱里。Gmail的附件目前最大25兆,QQ邮箱是50兆,所以本方法不适合大型商业网站,个人独立博客比较合适的说。

下面贴出脚本,本方法需要先安装mutt邮件客户端。
请注意,有些老点的文章中给出的示例,在邮件地址前面没有 — 符号,这会造成新版本的mutt提示 No recipients specified. 只要加上 — 符号就可以了。
还有一个注意的地方,如果连续发送很多数据库文件并保存在Sent文件中,很快就会消耗大量的本地硬盘空间。让mutt默认不保存已发送邮件的方法是修改 /etc/Muttrc文件,或者在当前用户home目录下,修改或建立一个隐藏文件 .muttrc (注意这两个M的大小写), 修改或增加这样一行 set record=”/dev/null” (一般默认为 set record=”~/Sent”),就可以让Mutt不保存已发送邮件从而节省空间了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/sh
sendfiletogmail ()
{
        FilePath=$1
        FileName=$2".bz2"
        mutt -s "Database Backup File ${FileName}" -a${FilePath}"/"${FileName} -- yourMailBox@gmail.com < "/path/to/emailbody.txt"
}
 
 
backup ()
{
        DBName=$@
        BackupPath="/path/to/"${DBName}
        BackupName=${DBName}-`date "+[%z%Z]%Y-%m-%d-%H-%M-%S"`".sql"
                if [[ -d "${BackupPath}" ]] || mkdir ${BackupPath};
                then
                                if        mysqldump -uroot -pYourPasswd \
                                                --default-character-set=utf8 --opt --master-data=1 \
                                                --single-transaction --flush-logs \
                                                ${DBName} > ${BackupPath}"/"${BackupName};
                                then
                                                echo ${BackupName}"Backup success!"
                                                bzip2 -q -s  ${BackupPath}"/"${BackupName};
                                                sendfiletogmail ${BackupPath} ${BackupName}
                                else
                                                echo ${BackupName}"Backup Failed@@@@@@@@@@@@@@@@@@@@@@@@"
                                fi
                fi
                find ${BackupPath}"/" -ctime +7 -exec rm {} \;
}
#Call the function to backup database assigned below
backup  yourDBnamd_db
专题导航前一篇后一篇