Backup your Linux System
一、我們需要備份什麼?
我的 Linux 系統是基於 Redhat 的Redhat Linux 9.0,同時配置了諸如 MySQL、PHP、Apache 等基礎服務,同時又配有 Awstats、MRTG、MT 等應用服務程式,因此,我們需要備份的除了系統本身的重要檔案以外,還需要備份資料庫、log檔案和統計資料檔案等。當然另外一項必不可少的就是編譯各項服務時的 ./configure 引數,這裡就不贅述了。
二、制定備份檔案列表。
這個步驟就是歸納一下需要備份的目錄列表。以下我就依照我所安裝的各項服務作了一個簡單的list。 一些檔案的地址是以我的伺服器為標準(以"/"開頭),一些則以相對目錄來描述(以"./"開頭)。
系統:
包含所有核心配置檔案。這其中包括網路配置、系統名稱、防火牆規則、使用者、組,以及其他全域性系統項。
包含系統守護程式(服務)所使用的資訊,包括 DNS 配置、DHCP 租期、郵件緩衝檔案、HTTP 伺服器檔案、db2 例項配置,等等。
包含所有使用者的預設使用者主目錄。這包括他們的個人設定、已下載的檔案和使用者不希望失去的其他資訊。
是根(root)使用者的主目錄。
是安裝許多非系統檔案的地方。IBM 軟體就安裝在這裡。OpenOffice、JDK 和其他軟體在預設情況下也安裝在這裡。
系統中不需要備份的目錄:
應該永遠不要備份這個目錄。它不是一個真實的檔案系統,而是執行核心和環境的虛擬化檢視。它包括諸如 /proc/kcore 這樣的檔案,這個檔案是整個執行記憶體的虛擬檢視。備份這些檔案只是在浪費資源。
包含硬體裝置的檔案表示。如果計劃還原到一個空白的系統,那就可以備份 /dev。然而,如果計劃還原到一個已安裝的 Linux 系統,那麼備份 /dev 是沒有必要的。
更多關於目錄的解釋,請檢視 和
MySQL:
同時要注意版本的保留,在恢復的時候使用相同的版本(或者相同系列的版本)會減少更多不必要的麻煩,例如 “/usr
/local/mysql-standard-4.1.7-pc-linux-i686”。
MySQL 的配置檔案。
Apache:
Apache 的 log 檔案。這裡建議使用 cronolog 來 rotate Apache 的巨大 log。可以參考我的 cronolog 雜記
Apache 的配置檔案,例如: httpd.conf。還是建議在修改此文字的時候使用“#”號 comment 修改的內容,然後新增需要修改的內容。
PHP:
個人覺得這個就夠了。如果你設定了 php 的 error log 檔案,當然那個也是需要的。
Movable Type:
一般來說 blog 不會太大,不介意的話就整個備份一下。當然最重要的是 ./MT-3.0D-full-en_ususr/db/ 資料夾,裡面有所有的資料(如果你沒有用 MySQL 作為 MT 的資料儲存格式的話)。
Awstats:
Awstats 的配置檔案。諸如:awstats.blog.conf
Awstats 的分析留檔檔案。 諸如:awstats082004.blog.txt
MRTG:
三、使用 tar 和 crontab 等簡單工具備份。
以下是使用 tar 的指令碼,去掉了多餘的說明部分。 您也可以下載並修改以適合自己的系統。在指令碼中我儘量用更多的方法來進行備份。在實際應用中可以將步驟更加簡化。更多關於 tar 的引數請看
#!/bin/sh這裡引用了『Linux 備份與恢復速成指南』中的一個小技巧,將檔案列表寫入一個檔案進行操作。。# Date format: 20040626
DATE=`date -d yesterday +%Y%m%d`# MySQL version & directory
MYSQL_VERSION="4.x.x"
MYSQL_DIR="/usr/local/mysql/data"# MT Blog directory
MTBLOG_DIR="/path-to-mt/db/"# Backup directory & Backup Filelist
BACKUP_DIR="/path-to-backup/backupfile"
BACKUP_FILELIST="/path-to-backup/filelist"# Backup MySQL
printf "Backup MySQL data directory, please wait... "
tar -zpcvPf $BACKUP_DIR/mysql-standard-$MYSQL_VERSION-data-$DATE.tgz $MYSQL_DIR | grep "tar:"
printf "Done! The new backup file is: $BACKUP_DIR/mysql-standard-$MYSQL_VERSION-data-$DATE.tgz "# Backup MT Blog
printf "Backuping the MT3.0 Weblog data directory, please wait... "
tar -zpcvPf $BACKUP_DIR/MT-db-$DATE.tgz $MTBLOG_DIR | grep "tar:"
printf "Done! The new backup file is: $BACKUP_DIR/MT-db-$DATE.tgz "
以下是一個檔案列表的例子:
/etc以下解釋引自『Linux 備份與恢復速成指南』:
/var
/home
/usr/local
/opt (有時會是空目錄)
請注意 tar -T(或 files-from)命令不能接受萬用字元。檔案必須明確地列出。上面的例子展示了一種單獨地引用檔案的方法。您還可以執行指令碼來搜尋系統,然後建立一個列表。下面就是這樣一個指令碼的例子:
#!/bin/sh上面的指令碼首先將 MyFiles 中的所有現有檔案列表複製到 TempList。然後它執行兩個 find 命令來搜尋檔案系統中匹配某個模式的檔案,並將它們附加到 TempList。第一次是搜尋 /usr/share 目錄樹中以 .png 結尾的所有檔案。第二次是搜尋 /tmp 目錄樹中以 .iso 結尾的所有檔案。在建立好列表之後,tar 然後在檔案裝置 /dev/st0 (第一個 SCSI 磁帶裝置)上建立 一個新的歸檔檔案,該檔案使用 gzip 格式來壓縮,並保留所有檔案許可權。該歸檔檔案將跨越多個卷。要歸檔的檔案的名稱將從 TempList 檔案中提取。
cat MyFiles > TempList
find /usr/share -iname *.png >> TempList
find /tmp -iname *.iso >> TempList
tar -cpzMf /path-to-backup/backupfile -T TempList
四、適用於 log 和資料庫的增量備份(incremental backup)。
對於龐大的 log 或者 資料庫檔案,每天進行完全備份似乎不是很能合理高效地實現備份工作。所以在較短的時間週期內,適用增量備份(incremental backup)會是一個不錯的選擇。
tar 並不是最好的增量備份工具
tar 並不是最好的增量備份的工具,但是它也可以實現增量備份。參照 『The tar backup program』中的指令碼可以實現這個操作。
簡單地介紹一下其原理:
首先,製作一個完全備份的時間點檔案,例如 "full-date"。其中寫入某次完全備份的時間點,例如 echo $NOW > full-date。
然後在自定的時間迴圈期內(例如一週),每次和完全備份時間點(full-date)對比後進行增量備份。
其中最關鍵的一個語句就是:
tar --newer $full-date -zcpf $BACKUPDIR/$BACKUPFILE-$NOW.tgz $DIRECTOIES其結果就是,在一週中會產生 6 個獨立檔案,其內容是前一天內新增的內容。以下是一個例子:
[root@deep] /# ls -l /backups/total 22217
-rw-r--r-- 1 root root 10731288 Feb 7 11:24 deep-01Feb.tar << 每月月初一次完全備份
-rw-r--r-- 1 root root 6879 Feb 7 11:24 deep-Fri.tar << 每天的增量備份
-rw-r--r-- 1 root root 2831 Feb 7 11:24 deep-Mon.tar
-rw-r--r-- 1 root root 7924 Feb 7 11:25 deep-Sat.tar
-rw-r--r-- 1 root root 11923013 Feb 7 11:24 deep-Sun.tar << 每週一次完全備份
-rw-r--r-- 1 root root 5643 Feb 7 11:25 deep-Thu.tar
-rw-r--r-- 1 root root 3152 Feb 7 11:25 deep-Tue.tar
-rw-r--r-- 1 root root 4567 Feb 7 11:25 deep-Wed.tar
drwxr-xr-x 2 root root 1024 Feb 7 11:20 last-full
tar 中幾個開關的簡介:
注意:-u 開關並不是增量備份,而是往原有的 tar 包裡面新增新的檔案。
fbackup is a better choice
在 HP 的論壇上,有關於增量備份的討論--。但是因為我不是 HP 的系統,tar 已經可以滿足現有的備份需求。
五、使用 ssh 實現安全網路遠端備份。
[很抱歉,此段筆者沒有試驗環境,現在之能新增幾篇關於 ssh 遠端傳送的文章。等到經過試驗後,我會新增具體內容。]
六、個人使用的 e-mail 簡單備份。
由於 Yahoo!、Google、Hotmail 相繼推出了 1-2G 的郵箱,因此可是試著使用帶有檔案附件的 E-mail 來傳輸小於各個郵箱的單封信件上限大小的檔案。 具體需要用到一些諸如 uudecode 的命令,所以需要先安裝一個 。 我在編譯中遇到一些簡單的錯誤,這裡是我修改過的 。
在命令列下傳送帶附件的郵件時,還是建議使用諸如 MUTT 的 ,請檢視我的 MUTT 的安裝失敗經歷,也許對新裝的使用者有所幫助。
安裝完畢後,可以使用 Mutt 的命令列一行解決問題。首先先寫一個郵件文字 mailcontent.txt。
# cat mailcontent.txt | mutt -s "mailtitle" -a attachfile1 mail@address
結合上面的 shell 指令碼,如果你有企業級郵箱的話,不妨也試試這種方法。僅供參考。
參考文件:
Useful Links:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-925624/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQLBackupAndFTP12.0 failed to backup database with full backup typeSQLFTPAIDatabase
- Linux中的System V訊號量Linux
- Linux桌面基礎:X Window System——XorgLinux
- md_backup
- Your title
- Scan Your Truck Using Nexiq Adapter: Simplifying Your Diagnostic ProcessAPT
- Prettier your projectProject
- Offering Your Seat
- Linux Red Hat啟動時顯示system not foundLinux
- 關於linux下system()函式的總結Linux函式
- 在u盤上安裝linux 打造你的portable linux system.Linux
- Using V$BACKUP_ASYNC_IO / V$BACKUP_SYNC_IO to Monitor RMAN PerformanceORM
- Linux 程式間通訊之System V 訊號量Linux
- Structuring Your TensorFlow ModelsStruct
- translate-your-site
- deploy-your-site
- your Android sdk is missingAndroid
- talk-to-your-data
- connect your tunnel to CloudflareCloud
- DBMS_BACKUP_RESTORE.DBMS_BACKUP_RESTORE用於特殊情況下的恢復REST
- BACKUP PENDING狀態的解除
- milvus-backup安裝部署
- recover database using backup controlfile理解Database
- Veritas Backup Exec™ 21.3 Multilingual (Windows)Windows
- Linux 程式間通訊之System V 共享記憶體Linux記憶體
- linux 程式間通訊之System V 訊息佇列Linux佇列
- Linux/Docker 中使用 System.Drawing.Common 踩坑小計LinuxDocker
- linux nvidia驅動錯誤--NVRM: This PCI I/O region assigned to your NVIDIA device is invalidLinuxVRdev
- System
- Creating your first iOS FrameworkiOSFramework
- RuneScape - To verify your level of combatBAT
- [20190228]Backup Restore Throttle sleep.txtREST
- PostgreSQL xlog格式之no backup full pageSQL
- PostgreSQL xlog格式之backup full pageSQL
- clickhouse-backup(RPM方式安裝)
- Mac Backup Guru for Mac(備份工具)Mac
- Crunchy PostgreSQL database backup via pgo commandSQLDatabaseGo
- 錯誤內容:You have an error in your SQL syntax; check the manual that corresponds to your MySQL serverErrorMySqlServer
- Project Management - 2) Estimate Your WorkProject