centos中使用shell指令碼實現每天自動備份**檔案和資料庫並上傳到ftp中..
一、安裝email傳送程式
複製** **如下:
yum install sendmail mutt
二、安裝ftp客戶端程式
本指令碼需要用到ftp客戶端程式將檔案上傳到ftp空間上面,因此必須安裝ftp客戶端,否則將出現ftp命令無法找到的錯誤。
安裝步驟請參考:《centos提示ftp:command not found》
複製** **如下:
#!/bin/bash
#你要修改的地方從這裡開始
mysql_user=root #mysql使用者名稱
mysql_pass=123456 #mysql密碼
mail_to=***[email protected] #資料庫傳送到的郵箱
ftp_user=ftpuser #ftp使用者名稱
ftp_pass=ftpuserpassword #ftp密碼
ftp_ip=***.***.***.*** #ftp位址
ftp_backup=backup #ftp上存放備份檔案的目錄,這個要自己得ftp上面建的
web_data=/home/wwwroot #要備份的**資料,如果是使用lnmp安裝包,則預設這個為**目錄
#你要修改的地方從這裡結束
#定義資料庫的名字和舊資料庫的名字
databakname=data_$(date +"%y%m%d").tar.gz
webbakname=web_$(date +%y%m%d).tar.gz
olddata=data_$(date -d -5day +"%y%m%d").tar.gz
oldweb=web_$(date -d -5day +"%y%m%d").tar.gz
#刪除本地3天前的資料
rm -rf /home/backup/data_$(date -d -3day +"%y%m%d").tar.gz /home/backup/web_$(date -d -3day +"%y%m%d").tar.gz
cd /home/backup
#匯出資料庫,乙個資料庫乙個壓縮檔案
for db in `/usr/local/mysql/bin/mysql -u$mysql_user -p$mysql_pass -b -n -e 'show databases' | xargs`; do
(/usr/local/mysql/bin/mysqldump -u$mysql_user -p$mysql_pass $ | gzip -9 - > $.sql.gz)
done
#壓縮資料庫檔案為乙個檔案
tar zcf /home/backup/$databakname /home/backup/*.sql.gz
rm -rf /home/backup/*.sql.gz
#傳送資料庫到email,如果資料庫壓縮後太大,請注釋這行
echo "content:this email is auto send by vps..." | mutt -a /home/backup/$databakname -s "subject:vps database backup" $mail_to
#壓縮**資料
tar zcf /home/backup/$webbakname $web_data
#上傳到ftp空間,刪除ftp空間5天前的資料
ftp -v -n $ftp_ip << end
user $ftp_user $ftp_pass
type binary
cd $ftp_backup
delete $olddata
delete $oldweb
put $databakname
put $webbakname
byeend
四、配置
給指令碼新增執行許可權:
複製** **如下:
chmod 774 /root/autobackuptoftp.sh
利用系統crontab實現每天自動執行:
複製** **如下:
crontab -e
輸入以下內容:
複製** **如下:
00 02 * * * /root/autobackuptoftp.sh
其中00 02為時間分/小時,可自行修改,例如:30 12 ***,就是每天12.30執行這個指令碼。
CentOS下每天自動備份mysql資料庫
每天自動備份mysql資料庫的指令碼,並且自動傳送到你指定的郵箱面,這樣vpser再也不會為丟失資料煩惱啦。mysqldump uuser ppassword databases db1 db2 db3 home website backups databackup.sql tar zcf home...
Centos7 設定mysql自動備份
要設定自動備份,思路是2個步驟,第一步 1 編寫shell備份指令碼 mysql user username mysql備份使用者 mysql password password mysql備份使用者的密碼 mysql host mysql port 3306 mysql charset utf8 ...
MySQL在CentOS上執行自動備份
很多人會問為什麼要使用svn或者是git,那麼我會問 我相信你寫的 很好,但是有一天你修改了很多很多的bug,但是突然想到以前的 中有乙個比較重要的演算法你不小心覆蓋掉了,這時候你應該怎麼辦?或許你會告訴我你可以在修改這些 之前備份一次當前修改的檔案,或者是當前專案。但是時間久了你的機器上會有多少備...