Linux定時備份資料庫到指定郵箱

2021-09-17 08:22:43 字數 2402 閱讀 1468

本文**豆漿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安裝路徑,設定的路徑不同 ...