tar備份與恢復算法
tarball備份包 ——歸檔及壓縮ide
歸檔:將許多零散的文件整理爲一個文件的文檔管理;文件總的大小基本不變工具
壓縮:按某種算法減小文件所佔用空間的大小;恢復時按對應的逆向算法解壓.net
一般所說的「打一個備份包」指的是先作歸檔再作壓縮,生成備份包文件server
常見的壓縮格式及命令工具blog
Windows下: .zip 、.rar 、.7zip
Linux下:紅色,表明壓縮包文檔
.gz 傳統的壓縮格式,壓縮速度快 ---> gzip、gunzipget
.bz2 較新,壓縮比例高一些 ---> bzip二、bunzip2it
.xz 最新,壓縮比例高、壓縮效率快 ---> xz、unxz
gzip、bzip二、xz壓縮文件時直接將文件壓縮成壓縮包,原文件消失,而且不能壓縮目錄
tar壓縮與解壓縮時原文件不受影響
zip歸檔工具:
.zip 爲跨平臺的壓縮包格式
zip和unzip工具【歸檔+壓縮】
歸檔+壓縮操做(製做 .zip 格式的備份包):
格式:zip [-r] 備份文件.zip 被壓縮的文件和目錄...
** 包含目錄時必須加 -r 選項
# zip -r /opt/file.zip /boot/ /etc/passwd
# ll -h /opt
釋放歸檔+解壓操做(釋放 .zip 格式的備份包):
格式:unzip 備份文件.zip [-d 目標文件夾]
# unzip /opt/file.zip -d /mnt
# ll -h /mnt
tar 工具 自己只作歸檔(不壓縮),但可調用gzip、bzip2對歸檔結果進行壓縮
格式: # tar 選項 壓縮包的名字 被壓縮的源文件
經常使用選項
– -c:建立歸檔 打包
– -x:釋放歸檔 解包
– -f:指定歸檔文件名稱(使用時百分百要加上它)
– -C:指定歸檔文件及釋放的位置
– -z、j、J:調用 .gz、.bz二、.xz格式的工具進行處理
– -v:輸出詳細信息
– -t:顯示歸檔中的文件清單
– -P:【path】保持歸檔內文件的絕對路徑 #當解壓縮時直接覆蓋原路徑下同名的文件
-d:指定解壓到的目錄
# tar -cf test01.tar /etc/passwd /boot/ #打包
備份與恢復操做
製做tar備份包: 使用 tar -c ... 命令
– tar -zcf 備份文件.tar.gz 被備份的文檔....
– tar -jcf 備份文件.tar.bz2 被備份的文檔....
– tar -Jcf 備份文件.tar.xz 被備份的文檔....
– tar -z/j/JcPf 備份文件.tar.gz/bz2/xz 被備份的文檔....
# tar -zcf /opt/tes01.tar.gz /etc/passwd /boot/
# tar -jcf /opt/test02.tar.bz2 /etc/passwd /boot/
# tar -Jcf /opt/test03.tar.xz /etc/passwd /boot/
# tar -zcPf /opt/home.tar.gz /home #以絕對路徑壓縮歸檔
查看tar備份包內容(不解壓縮,只查看):
– tar -tf 備份文件
– tar -tPf 備份文件.tar.gz/bz2/xz
# tar -tf /opt/home.tar.gz #查看包裏面的文件
釋放歸檔壓縮包:
格式:tar [選項]... 歸檔文件 [-C 目標目錄]
– tar -xf 備份文件 [-C 目標目錄]
– tar -xPf 備份文件.tar.gz/bz2/xz -C 目標目錄
# tar -xf /opt/home.tar.gz -C /mnt/ #以相對路徑的解壓縮
# tar -xPf /opt/home.tar.gz -C /mnt/ #以絕對路徑解壓縮
統計目錄或文件佔用的空間:du -sh 目錄路徑 【sumary、human-readable】
總結:以絕對路徑打包並壓縮,在解壓縮解包時,便可以以絕對路徑釋放也能夠以相對路徑釋放;沒有以絕對路徑打包並壓縮,在解壓縮解包時,只能夠以相對路徑釋放
在生產環境中,打包時最好都以絕對路徑來進行打包
###############################################################################
示例:建立一個備份包
用 tar 工具完成如下備份任務:
建立一個名爲 /root/backup.tar.bz2 的歸檔文件
其中包含 /usr/local 目錄中的內容
tar 歸檔必須使用 bzip2 進行壓縮
步驟一:建立備份文件
使用tar命令製做歸檔備份,結合-j選項調用bzip2壓縮工具,保留絕對路徑:
[root@server0 ~]# tar jcPf /root/backup.tar.bz2 /usr/local/
步驟二:確認結果
[root@server0 ~]# ls -lh /root/backup.tar.bz2 //確認文件
-rw-r--r--. 1 root root 1.9K 12月 23 23:22 /root/backup.tar.bz2
[root@server0 ~]# tar -tPf /root/backup.tar.bz2 //確認內容
使用tar備份系統
tar cvpzf backup.tgz --exclude=/proc --exclude=/mnt --exclude=/lost+found --exclude=sys --exclude=/media --exclude=/run --exclude=backup.tgz /
備份當前目錄下的全部文件
tar -g /tmp/abc.snap -zxpf /tmp/data.tar.gz .
在須要恢復的目錄下解壓恢復
tar -zxpf /tmp/data.tar.gz -C .
恢復
tar xvpfz backup.tgz -c /