linux上有功能強大的tar命令,tar最初是為了製作磁帶備份(tape archive)而設計的,它的作用是把檔案和目錄備份到磁帶中,然後從磁帶中提取或恢復檔案。現在我們可以使用tar來備份資料到任何儲存介質上。它是檔案級備份,不必考慮底層檔案系統類別,並且支援增量備份。
其他許多系統(應用或**)每天都有靜態檔案產生,對於一些比較重要的靜態檔案如果有進行定期備份的需求,就可以通過tar打包壓縮備份到指定的地方,特別是對一些總檔案比較大比較多的情況,還可以利用-g選項來做增量備份。
備份的目錄最好使用相對路徑,也就是進入到需要備份的根目錄下
具體示例方法如下。
備份當前目錄下的所有檔案
# tar -g /tmp/snapshot_data.snap -zcpf /tmp/data01.tar.gz .
在需要恢復的目錄下解壓恢復
# tar -zxpf /tmp/data01.tar.gz -c .
-g
選項可以理解備份時給目錄檔案做乙個快照,記錄許可權和屬性等資訊,第一次備份時/tmp/snapshot_data.snap
不存在,會新建乙個並做完全備份。當目錄下的檔案有修改後,再次執行第一條備份命令(記得修改後面的檔案檔名),會自動根據-g
指定的快照檔案,增量備份修改過的檔案,包括許可權和屬性,沒有動過的檔案不會重複備份。
另外需要注意上面的恢復,是「保留恢復」,即存在相同檔名的檔案會被覆蓋,而原目錄下已存在(但備份檔案裡沒有)的,會依然保留。所以如果你想完全恢復到與備份檔案一模一樣,需要清空原目錄。如果有增量備份檔案,則還需要使用同樣的方式分別解壓這些檔案,而且要注意順序。
下面演示乙個比較綜合的例子,要求:
# cd /tmp/data
做一次完全備份
# rm -f /tmp/snapshot_data.snap
# tar -g /tmp/snapshot_data.snap -zcpf - --exclude=./cache ./ | split -b 1024m - /tmp/bak_data$(date -i).tar.gz_
分割後檔名後會依次加上aa,ab,ac,...,上面最終的備份歸檔會儲存成
bak_data2014-12-07.tar.gz_aa
bak_data2014-12-07.tar.gz_ab
bak_data2014-12-07.tar.gz_ac
...增量備份
可以是與完全備份一模一樣的命令,但需要注意的是假如你一天備份多次,可能導致檔案檔名重複,那麼就會導致
備份實現,因為split依然會從aa,ab開始命名,如果一天的檔案產生(修改)量不是特別大,那麼建議增量部分不
分割處理了:( 一定要分割的話,檔名加入更細緻的時間如$(date +%y-%m-%d_%h) )
# tar -g /tmp/snapshot_data.snap -zcpf /tmp/bak_data2014-12-07.tar.gz --exclude=./cache ./
第二天增備
# tar -g /tmp/snapshot_data.snap -zcpf /tmp/bak_data2014-12-08.tar.gz --exclude=./cache ./
恢復過程
恢復完全備份的檔案檔案
可以選擇是否先清空/tmp/data/目錄
# cat /tmp/bak_data2014-12-07.tar.gz_* | tar -zxpf - -c /tmp/data/
恢復增量備份的檔案檔案
$ tar –zxpf /tmp/bak_data2014-12-07.tar.gz -c /tmp/data/
$ tar –zxpf /tmp/bak_data2014-12-08.tar.gz -c /tmp/data/
...一定要保證是按時間順序恢復的,像下面檔名規則也可以使用上面萬用字元的形式
如果需要定期備份,如每週一次全備,每天一次增量備份,則可以結合crontab實現。
備份檔案系統方法有很多,例如cpio, rsync, dump, tar,這裡演示乙個通過tar
備份整個linux系統的例子,整個備份與恢復過程與上面類似。
首先linux(這裡是centos)有一部分目錄是沒必要備份的,如/proc
、/lost+found
、/sys
、/mnt
、/media
、/dev
、/proc
、/tmp
,如果是備份到磁帶/dev/st0
則不必關心那麼多,因為我這裡是備份到本地/backup
目錄,所以也需要排除,還有其它一些nfs或者網路儲存掛載的目錄。
建立排除列表檔案
# vi /backup/backup_tar_exclude.list
/backup
/proc
/lost+found
/sys
/mnt
/media
/dev
/tmp
$ tar -zcpf /backup/backup_full.tar.gz -g /backup/tar_snapshot.snap --exclude-from=/backup/tar_exclude.list /
使用tar無論是備份資料還是檔案系統,需要考慮是在原系統上恢復還是另乙個新的系統上恢復。 tar命令高階用法 備份資料
linux上有功能強大的tar命令,tar最初是為了製作磁帶備份 tape archive 而設計的,它的作用是把檔案和目錄備份到磁帶中,然後從磁帶中提取或恢復檔案。現在我們可以使用tar來備份資料到任何儲存介質上。它是檔案級備份,不必考慮底層檔案系統類別,並且支援增量備份。其他許多系統 應用或 每...
mysql備份資料庫命令 mysql備份資料庫命令
假如使用了xtrabackup備份工具 完全備份 xtrabackup.exe defaults file d mysql my.ini backup target dir d mysqlfullbak 增量備份 xtrabackup.exe defaults file d mysql my.ini...
mysql備份資料 mysql 備份資料
1 備份命令 格式 mysqldump h主機名 p埠 u使用者名稱 p密碼 dbname tbname 檔名.sql 如果tbname不填,就是單個資料據的所有表 例如 mysqldump h 192.168.1.100 p 3306 uroot ppassword database cmdb d...