本文**豆漿melon :linux下每天備份mysql資料庫併發送到指定郵箱這裡使用的是網易郵箱126郵箱的stmp服務,伺服器是smtp.126.com。如果你使用其它第三方郵箱,在帳號設定那裡一般都有說明smtp伺服器位址。
如果你的ubuntu沒有安裝mail模組,則需要執行這條命令來安裝郵件模組:
root@name:~# apt-get install mailutils
開啟mail配置檔案
vim /etc/mail.rc
在結尾部分加上這些設定
set [email protected] [email protected]
set [email protected] smtp-auth-password=mypassword smtp-auth=login
測試郵件是否傳送成功:
echo "test content" | mail -s "mail title" [email protected]
備份mysql使用mysqldump命令,先來熟悉一下,待會再改進
mysqldump -u資料庫帳號 -p資料庫密碼 資料庫名 > "/tmp/bak.sql"
執行以上命令,進入/tmp/bak.sql備份檔案是否存在,存在就ok了,注意 -p資料庫密碼之間沒有空格。
編寫指令碼和定時任務
萬事俱備,接下來要做自動化工作:建立乙個備份指令碼,並使用定時任務每天執行它。
在某個目錄建立乙個shell指令碼,為了簡單說明我直接建在/back_mysql.sh,內容如下
vim /back_mysql.sh
#!/bin/bash
#send the mysql of backup file to email
#author melon
#version 0.1
#根據日期命名備份檔案
filename=`date +%y-%m-%d`"-blog-bak.sql"
path="/tmp/"$filename
#執行備份
/usr/bin/mysqldump -u資料庫帳號 -p資料庫密碼 資料庫名 > $path
#傳送郵件
#刪除臨時檔案
echo "郵件內容" | mail -s $filename -a $path 郵箱
rm -f $path
/usr/bin/mysqldump是完整的命令路徑,如果你不知道命令的完整路徑,可以使用whereis 命令名來檢視 使用crontab建立定時任務,每天的0時0分執行
crontab -e
0 0 * * * /bin/sh /back_mysql.sh
你可以設定其它時間段傳送,具體crontab的用法請自行搜尋。
使用zip命令打包檔案並加密
可能會覺得直接發sql檔案不夠安全,或者還有其它檔案比如附件要一起傳送,下面我將使用linuxzip命令
對附件和sql檔案一起加密打包,完整**如下,詳細不一一說明了
#!/bin/bash
#send the blog of backup file to email
#author melon
#version 0.2
#zip檔名
filename=`date +%y-%m-%d`"-blog-bak.zip"
#zip檔案路徑
path="/tmp/"$filename
#sql備份檔案路徑
mysqlpath="/tmp/blog.sql"
#附件備份路徑
uploadpath="/tmp/uploads"
/usr/bin/mysqldump -u資料庫帳號 -p資料庫密碼 資料庫名 > $mysqlpath
#建立附件備份(這是我部落格的附件位置)
cp -r "/www/blog/usr/uploads/" "/tmp/"
#加密打包,>/dev/null 2>&1表示資訊重定向,方便除錯時不輸出加密資訊,你也可以省略
/usr/bin/zip -p 加密密碼 -r $path $mysqlpath $uploadpath >/dev/null 2>&1
echo "郵件內容" | mail -s $filename -a $path 郵箱
#刪除備份檔案
rm -f $path $mysqlpath
rm -rf $uploadpath
注:本文**豆漿melon :linux下每天備份mysql資料庫併發送到指定郵箱 linux 定時備份資料庫
linux下定時備份mysql使用到了crontab系統,其按日期對備份結果進行儲存,從而達到備份資料庫的目的。1 建立mysql中資料庫的備份目錄,mkdir mysqlbackdir 2 建立mysql備份指令碼,vi usr sbin bak mydb 2012 6 19 edit by ji...
linux定時備份資料庫
1.首先我們需要檢視磁碟空間,命令 df h 我們可以看到根目錄下的磁碟空間比較大,之所以要看磁碟空間,目的是防止我們經常備份資料庫,導致磁碟的容量不夠 2.新建檔案,存放資料庫備份指令碼和備份資料 cd mkdir backup 3 在backup目錄下新建指令碼名為backup.sh vi ba...
linux 定時備份資料庫 上傳
編輯crontab定時任務,每分鐘執行一次 home oracle bak 1.sh crontab e 1 home oracle bak 1.sh home oracle bak backup.log 自動備份資料庫並將上一次備份資料刪除,並壓縮 根據不同的oracle安裝路徑,設定的路徑不同 ...