您好,登錄后才能下訂單哦!
這篇文章主要介紹shell編程實戰之網站文件及數據庫文件如何備份,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
文件備份的重要性不言而喻,定期備份是個好習慣,不管是網站文件還是日常生活的照片、視頻等。不然等到數據丟失了,你就能體會數據找不回來的那種絕望了。筆者親身經歷過幾次,最嚴重的一次是個人博客7個多月的數據全部丟失,那真是種欲哭無淚的感覺。
今天和大家來講下如何在服務器端編寫備份網站目錄及數據庫文件的腳本。首先需要先補充幾個知識:
tar命令,文件的壓縮打包
find命令,查找文件
bzip2,文件壓縮
為了節省空間,我們經常會對目錄文件做壓縮并打包的操作。bzip2命令可以對文件進行壓縮,但它不能對目錄進行壓縮,對目錄則可以使用tar命令壓縮打包。
因為數據庫文件就是一個單獨的sql文件,所以可以使用bzip2命令對其壓縮。
mysqldump -u用戶名 -p密碼 --all-databases | bzip2 > 備份目錄/文件名
而網站文件則需要使用tar命令來進行壓縮。
tar -jcpf 備份目錄/文件名 需備份的目錄
雖然我們每天都會進行備份,但是我們只想保存最近七天的備份記錄,7天前的備份數據自動刪除。這里我們就需要使用find命令來找出7天前的備份文件,然后將其刪除。
find 備份目錄 -mtime +7 -type f -exec rm -f {} \;
下面開始正式編寫shell腳本。首先,我們需要定義備份目錄,如果備份目錄不存在,則需要先創建目錄。
WWW_DIR=/home/wwwroot BAK_DIR=/root/bak if [ ! -d $BAK_DIR ];then mkdir $BAK_DIR fi
接下來 ,就是進行網站目錄以及數據庫文件的備份了
tar -jcpf $BAK_DIR/www_$(date +%Y%m%d).tar.bz2 $WWW_DIR 2>/dev/null mysqldump -uroot -p123456 --all-databases | bzip2 > $BAK_DIR/all_database_$(date +%Y%m%d).sql
最后,只要刪除七天前的備份數據即可
find $BAK_DIR -type f -mtime +7 -exec rm -f {} \;
下面貼出完整代碼:
#!/bin/bash # 備份數據庫文件及網站文件 WWW_DIR=/home/wwwroot BAK_DIR=/root/bak if [ ! -d $BAK_DIR ];then mkdir $BAK_DIR fi # 備份網站文件及數據庫文件 tar -jcpf $BAK_DIR/www_$(date +%Y%m%d).tar.bz2 $WWW_DIR 2>/dev/null mysqldump -uroot -pGuiyuan#520@1314 --all-databases | bzip2 > $BAK_DIR/all_database_$(date +%Y%m%d).sql # 刪除7天前的備份數據 find $BAK_DIR -type f -mtime +7 -exec rm -f {} \;
最后,還是希望大家能養成備份的習慣。除了服務器上的每日備份,另外還是建議一個星期,從服務器上拷貝一份數據到本地磁盤,保證數據萬無一失。
以上是shell編程實戰之網站文件及數據庫文件如何備份的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。