tar命令高階用法 備份資料

2021-09-23 19:11:09 字數 2782 閱讀 8611

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...