常见的压缩归档工具
常用壓縮工具原理:
????因為1byte=8bit,一個字節等于8位二進制數,所以每個byte當中會有8個空格,而每個空格可以是0,1。如此以來我存儲一個字符1,1會在最右邊占據一個bit,而其它7個bit將會被自動被填上0。其實那7個bit應該是空的。為了滿足我們操作系統對數據的訪問,所以會將該數據轉為byte的形態來記錄。壓縮即:利用一些復雜的計算方式,將沒有使用到的空間丟出去,以讓文件占用的空間變小。
????另外一種方式:將重復的數據進行統計記錄,例如你存儲100個1,那么壓縮技術會存儲100個1,而不是真有100個1的位存在。這樣也能夠精簡文件記錄的容量。
常用壓縮工具:
? ? Compress:這個壓縮命令是非常老舊的一款,大概只有在非常舊的unix機器上才能找到,所以在這里就不過多介紹啦。
? ??
? ? gzip,gunzip,zcat:
????gzip [-cdtv] 文件名
????????-c:將壓縮的工具輸出到屏幕上,可通過數據流重定向處理;
????????-d:解壓縮的參數
????? ? -t:可以用來檢驗壓縮文件的一致性,看看文件有無錯誤
????????-v:顯示壓縮過程的詳細信息
????????-#:壓縮等級-1最快,但是壓縮比最差,-9最慢,但是壓縮比最好,默認為6
????gizp壓縮文件后會默認刪除原文件,-c重定向可以保留原文件到當前目錄
????gzip==gunzip,解壓默認不保留壓縮文件,通常情況下我不建議用gunzip因為有時候會與其他工具搞混
????zcat:可以查看壓縮文件中的內容
????bzip2,bzcat,bzcat
????bzip2 [-cdkzv#]文件名
????????-c:將壓縮過程中產生的數據輸出到屏幕上
????????-d:解壓縮的參數
????????-k:保留原文件,而不會刪除原始的文件
????????-z:壓縮的參數
????????-v:可以顯示出壓縮過程詳細信息
????????-#:與gizp一樣,都是計算壓縮比的參數
????bzip2 + 文件 壓縮默認刪除原文件;
????bzcat + 壓縮包 可以查看壓縮文件中的數據
????????
????bzip2 -d 解壓默認刪除壓縮文件
? ? ? ??
????xz,unxz,xzcat
????xz [-dkv#]文件名
????????-d:解壓縮,效果等同于unxz
????????-k:壓縮保留原文件
????????-v:顯示壓縮過程詳細信息
????????-#:同gizp可以設定壓縮比,默認為6
????
? ? ? ?
? ? ? ?
????
????tar歸檔工具:
????tar [-jzcv][-f 新建的文件名]filename
????????-z:通過gizp的方式進行壓縮/解壓縮此文件名最好為*.gz
????????-j:通過bzip2的方式進行壓縮/解壓縮此文件名最好為*.bz2
????????-v:顯示壓縮/解壓縮的過程
????????-C:在解壓過程中,可以使用-C將其存入指定的目錄中
????????-f:后面要接被處理的文件名。建議-f單獨寫一個參數
????????-x:解壓縮的功能,可以配合-C在特定目錄中解開
????????-t:查看打包文件的內容含有哪些文件名,重點查看文件名
????????-c:新建打包文件,可搭配-v來查看過程中被打包的文件名
????????-p:保留原文件權限與屬性
????????-P:保留絕對路徑,允許備份數據中有根目錄存在
????最簡單的使用tar就只要記憶下面的方式即可:
? ? bzip2壓縮:tar -jcv -f file.tar.bz2 file1 file2...
????bzip2解壓:tar -jxv -f file.tar.bz2
????bzip2查看:tar -jtv -f file.tar.bz2
? ?解壓重定向:tar -jxv -f file.tar.bz2 -C /tmp
????gz壓縮:tar -zcv -f file.tar.gz file1 file2...
????gz解壓:tar -zxv -f file.tar.gz
????gz查看:tar -ztv -f file.tar.gz
????? ?
? ??
dd:
????功用:這個命令不只是制作一個文件而已。dd的最大功效在于“備份”。因為dd可以讀取磁盤設備的內容(幾乎是直接讀取扇區),然后將整個設備備份成一個文件。
? ??
? ? 格式:dd if="input file" of="output file" bs="block size" count="number"
范例一:將/etc/passwd 備份到 /tmp/passwd.back當中
dd?if=/etc/passwd?of=/tmp/passwd.back范例二:將/dev/sda1的第一個扇區備份下來(注:第一扇區就是MBR扇區)
dd?if=/dev/sda1?of=/tmp/mbr.back?bs=512?count=1范例三:找出你系統最小的那個分區,并且將它備份下來;(我的是/dev/sda1)
dd?if=/dev/sda1?of=/tmp/sda1.back? ?
? ? 你可以說,tar可以用來備份關鍵數據,而dd則可以用來備份整塊分區或整塊磁盤,如果要將數據填回到文件系統當中,可能需要考慮到原本的文件系統才能成功。
實戰練習:
????????將/etc/sda1 完整的復制到另一個分區上,請使用你的系統上面未分區完畢的空間再新建一個與/dev/sda1差不多大小的分區(只能比sda1大不能比它小)然后將之進行完整復制。
?分析:由于需要復制啟動扇區的區塊,所以使用cp或者tar這種命令是無法完成需求的。
轉載于:https://blog.51cto.com/wscto/1752173
總結
- 上一篇: Maven在Windows上的安装与配置
- 下一篇: 将一个数组划分为和差值最小的子数组