shell實(shí)現(xiàn)自動(dòng)備份mysql、整站數(shù)據(jù)的兩個(gè)腳本分享
案例一:shell+cron實(shí)現(xiàn)MySQL自動(dòng)備份且自動(dòng)刪除N天前備份
#!/bin/sh
DUMP=/usr/local/mysql/bin/mysqldump
OUT_DIR=/home/ldl/xxx/backup/
LINUX_USER=ldl
DB_NAME=ldl
DB_USER=ldl
DB_PASS=xxx
#How much days backup most
DAYS=1
#Core of script
cd $OUT_DIR
DATE=`date +%Y_%m_%d`
OUT_SQL="$DATE.sql"
TAR_SQL="mysql_$DATE.tar.gz"
$DUMP --default-character-set=utf8 --opt -u$DB_USER -p$DB_PASS $DB_NAME > $OUT_SQL
tar -czf $TAR_SQL ./$OUT_SQL
rm $OUT_SQL
chown $DB_NAME:nobody ./$TAR_SQL
find ./ -name "mysql*" -type f -mtime +$DAYS -exec rm {} \;
+++++++++++++++++++++++++++++++++++++++++++++++++++++
mysqldump不用解釋了吧,注意-uuser -ppass這樣才可以,不能有空格。
這一句主要是在-mtime上-mtime +5表示5天前的文件,統(tǒng)一刪除
我的操作系統(tǒng)是CentOS 5.4,只要把腳本拷貝到/etc/cron.daily,并設(shè)置為相同的權(quán)限就可以執(zhí)行了,不用再添加crontab。
案例二:CentOS下自動(dòng)備份網(wǎng)站和數(shù)據(jù)庫(kù)的腳本并上傳至FTP
假定這臺(tái)服務(wù)器的網(wǎng)站目錄為:/home/www,數(shù)據(jù)庫(kù)程序路徑為:/usr/local/mysql/bin,數(shù)據(jù)庫(kù)名為:levil,ftp服務(wù)器為:ftphost,下面先來(lái)看完整的自動(dòng)備份腳本(自動(dòng)備份腳本保存位置為:/home/backup.sh):
#!/bin/bash
cd /home
WebBakName=web_$(date +%y%m%d).tar.gz
tar zcvf $WebBakName www
SqlBakName=sql_$(date +%y%m%d).tar.gz
/usr/local/mysql/bin/mysqldump -uusername -ppassword levil>backup.sql
tar zcvf $SqlBakName backup.sql
ftp -nv ftphost << EOF
user ftpname ftppass
put $WebBakName
put $SqlBakName
quit
EOF
rm -f backup.sql $WebBakName $SqlBakName
下面來(lái)給大家一一講解:首先進(jìn)入/home目錄,定義WebBakName變量為網(wǎng)站備份的文件名,文件名格式為web日期.tar.gz,定義SqlBakName變量為數(shù)據(jù)庫(kù)備份的文件名,文件名格式為sql日期.tar.gz,把整個(gè)網(wǎng)站目錄www打包到WebBakName文件名中,使用mysqldump導(dǎo)出指定數(shù)據(jù)庫(kù)內(nèi)容到backup.sql,然后把數(shù)據(jù)庫(kù)備份打包到SqlBakName文件中,本機(jī)備份工作至此結(jié)束,如果你沒(méi)有足夠大的遠(yuǎn)程ftp空間的話,可以直接把備份文件下載到本機(jī),但我還是建議直接備份到另外一個(gè)服務(wù)器上的ftp空間中,做到完全自動(dòng)化備份,這時(shí)你需要把腳本中的ftphost、ftpname和ftppass分別替換成你的ftp信息,整個(gè)備份過(guò)程就完成了。
接著輸入chmod +x backup.sh給腳本添加執(zhí)行權(quán)限,再輸入:crontab -e編輯任務(wù)自動(dòng)開(kāi)始時(shí)間,比如我輸入:
00 05 1 /home/backup.sh 就代表每周1的上午5點(diǎn)整執(zhí)行該自動(dòng)備份操作。
在這一切完成之后,你可以先把自動(dòng)任務(wù)時(shí)間改為當(dāng)前的接近時(shí)間,看自動(dòng)備份腳本是否工作正常,測(cè)試OK的話以后就不用擔(dān)心這臺(tái)服務(wù)器出現(xiàn)任何問(wèn)題導(dǎo)致數(shù)據(jù)丟失了,當(dāng)然如果你的數(shù)據(jù)更新比較頻繁的話,建議把自動(dòng)備份時(shí)間調(diào)整為每日
- shell腳本實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)雙機(jī)定時(shí)備份的方法
- mysql常用備份命令和shell備份腳本分享
- shell腳本實(shí)現(xiàn)mysql定時(shí)備份、刪除、恢復(fù)功能
- 用shell寫(xiě)一個(gè)mysql數(shù)據(jù)備份腳本
- MySQL數(shù)據(jù)庫(kù)的shell腳本自動(dòng)備份
- linux下mysql如何自動(dòng)備份shell腳本
- 一個(gè)簡(jiǎn)單的MySQL備份Shell腳本
- Shell腳本自動(dòng)備份MySQL到FTP并定期清理過(guò)期備份
- MySQL備份Shell腳本的實(shí)現(xiàn)
相關(guān)文章
一天一個(gè)shell命令 linux文本操作系列-wc命令詳解
這篇文章主要介紹了一天一個(gè)shell命令 linux文本操作系列-wc命令詳解,需要的朋友可以參考下2016-06-06
Shell腳本入門(mén)之編寫(xiě)格式與執(zhí)行方式的實(shí)現(xiàn)
這篇文章主要介紹了Shell腳本入門(mén)之編寫(xiě)格式與執(zhí)行方式的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Linux 中糾正拼寫(xiě)錯(cuò)誤的Bash 命令方法
這篇文章主要介紹了Linux 中糾正拼寫(xiě)錯(cuò)誤Bash 命令的方法,需要的朋友可以參考下2018-03-03
驗(yàn)證用戶輸入的參數(shù)合法性的shell腳本
今天這個(gè)例子是 用來(lái)驗(yàn)證用戶輸入的參數(shù)的合法性的,程序并不復(fù)雜,需要的朋友可以參考下2016-08-08
Linux下查看.so和可執(zhí)行文件是否debug編譯的方法(必看)
下面小編就為大家?guī)?lái)一篇Linux下查看.so和可執(zhí)行文件是否debug編譯的方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
linux定時(shí)任務(wù)基礎(chǔ)命令介紹(14)
這篇文章主要為大家詳細(xì)介紹了linux定時(shí)任務(wù)基礎(chǔ)命令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Shell內(nèi)置命令之exit的語(yǔ)法與實(shí)例
系統(tǒng)中是有exit命令的,用于退出當(dāng)前用戶的登錄狀態(tài),但是在?Shell?腳本中,exit?語(yǔ)句是用來(lái)退出當(dāng)前腳本的,下面這篇文章主要給大家介紹了關(guān)于Shell內(nèi)置命令之exit的語(yǔ)法與實(shí)例,需要的朋友可以參考下2022-03-03

