Shell腳本是我們寫不同類型命令的一種腳本,這些命令在這一個(gè)文件中就可以執(zhí)行。我們也可以逐一敲入命令手動(dòng)執(zhí)行。如果我們要使用shell腳本就必須在一開始把這些命令寫到一個(gè)文本文件中,以后就可以隨意反復(fù)運(yùn)行這些命令了。
我首先要在本文帶給你的是完整腳本。后面會(huì)對(duì)該腳本做說(shuō)明。我假定你已經(jīng)知道shell scripting、 mysqldump和crontab。
適用操作系統(tǒng):任何Linux或UNIX。
主腳本(用于備份mysql數(shù)據(jù)庫(kù)):
該Shell腳本可以自動(dòng)備份數(shù)據(jù)庫(kù)。只要復(fù)制粘貼本腳本到文本編輯器中,輸入數(shù)據(jù)庫(kù)用戶名、密碼以及數(shù)據(jù)庫(kù)名即可。我備份數(shù)據(jù)庫(kù)使用的是mysqlump 命令。后面會(huì)對(duì)每行腳本命令進(jìn)行說(shuō)明。
1. 分別建立目錄“backup”和“oldbackup”
1 2 | #mkdir /backup #mkdir /oldbackup |
2. 現(xiàn)在使用你喜歡的編輯軟件創(chuàng)建并編輯“backup.sh”
這里我用的是 vi
1 | # vi /backup/backup.sh |
現(xiàn)在把以下幾行命令輸入到 backup.sh 文件中:
1 2 3 4 5 6 7 8 9 | #!bin/bash cd /backup echo “You are In Backup Directory” mv backup* /oldbackup echo “Old Databases are Moved to oldbackup folder” Now=$( date +”%d-%m-%Y--%H:%M:%S”) File=backup-$Now.sql mysqldump –u user-name –p ‘password’ database-name > $File echo “Your Database Backup Successfully Completed” |
腳本說(shuō)明:
切記,在第8行命令中,在mysqldump命令后要輸入自己的數(shù)據(jù)庫(kù)用戶名、密碼及數(shù)據(jù)庫(kù)名。
執(zhí)行該腳本,首先會(huì)進(jìn)入 /backup 目錄,然后該腳本會(huì)把原有的舊數(shù)據(jù)庫(kù)備份移動(dòng)到 /oldbackup 文件夾中,接著根據(jù)系統(tǒng)的日期及時(shí)間生成一個(gè)文件名,在最后 mysqldump 命令會(huì)生成一個(gè)“.sql”格式的數(shù)據(jù)庫(kù)備份文件。
3. 設(shè)置 backup.sh 腳本文件的可執(zhí)行許可
1 | # chmod +x /backup/backup.sh |
4. 執(zhí)行腳本
1 | #./backup.sh |
腳本運(yùn)行結(jié)束后會(huì)得到以下輸入。
1 2 3 4 5 | root@Server1: /download #./backup.sh You areinDownload Directory Old Backup DatabaseisMoved to oldbackup folder database backup successful completed root@Server1: /download # |
注:首次執(zhí)行該腳本會(huì)有一個(gè)“no such file”的提示信息,這是由于舊備份文件還不存在。只要再次執(zhí)行該腳本就沒(méi)有問(wèn)題了,這個(gè)問(wèn)題已經(jīng)不存在了。
5. 使用cron制訂備份計(jì)劃
使用Cron可以定時(shí)執(zhí)行該腳本,備份會(huì)自動(dòng)完成。使用 crontab 命令編輯cron 執(zhí)行的計(jì)劃任務(wù)。
1 | #crontab –e |
只要在編輯器上加入下面這一行代碼保存即可。
1 | 013* * * * /backup/backup .sh |
本任務(wù)表示的是在每天下午1點(diǎn)鐘把數(shù)據(jù)庫(kù)備份到指定的文件夾。有關(guān)cron任務(wù)設(shè)置的詳細(xì)內(nèi)容可以查閱crontab手冊(cè)。
對(duì)初學(xué)者而言,這是非?;A(chǔ)的腳本。希望你能舉一反三寫出更復(fù)雜的備份腳本。我們會(huì)努力提供更自動(dòng)化的新腳本。請(qǐng)大家不吝賜教,我們會(huì)盡力解決你們的問(wèn)題。感謝與我們相伴。
聯(lián)系客服