linux 文件的压缩和打包
生活随笔
收集整理的這篇文章主要介紹了
linux 文件的压缩和打包
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在我們的生活中,經常會和朋友、同事、客戶發一些文件。為了能夠更加快速、高效的將文件傳遞出去,經常會用到壓縮工具。壓縮工具通過一定的算法,把數據給盡可能的縮小。這樣不僅方便傳遞、而且可以節省空間。有時候我們需要把一些零散的文件集中到一起。通過使用打包工具,很容易就能把多個文件集中在一個包內,再對包進行壓縮傳遞。是不是很方便呢!下面我們將介紹linux環境下如何對文件進行打包、壓縮。 1、文件的壓縮 文件的壓縮方式有5種:compress、gzip、bzip2、xz、zip 各打包工具的使用及常用選項如下: (1)compress(.Z結尾的文件) -d 解壓縮 uncompress zcat X.Z > X -c 將結果打印到屏幕上,配合重定向,不會覆蓋原文件,但權限會變。 -f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1. -v 顯示詳細過程。包含壓縮進度 (2)gzip(.gz結尾的文件) -d 解壓縮 gunzip zcat X.gz > X -c 將結果打印到屏幕上,配合重定向,不會覆蓋原文件,但權限會變。 -f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1. -v 顯示詳細過程。 -# 數字越大,壓縮比越高,速度越慢,文件越小。 -1 等于 --fast -2,3,4,5,6(default),7,8 -9 等于 --best (3)bzip2(.bz2結尾的文件) -d 解壓縮 bunzip bzcat X.bz2 > X -k 保留原文件 -c 將結果打印到屏幕上,配合重定向,不會覆蓋原文件,但權限會變。 -f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1. -v 顯示詳細過程。 -# 數字越大,壓縮比越高,速度越慢,文件越小。 -1 等于 --fast -2,3,4,5,6,7,8 -9 等于 --best (default) (4)xz(.xz結尾的文件) -d 解壓縮 xzcat -k 保留原文件 -f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1. -v 顯示詳細過程。 -# 數字越大,壓縮比越高,速度越慢,文件越小。 -0 等于 --fast -1 -2,3,4,5,6(default),7,8 -9 等于 --best (5)zip(.zip結尾的文件) unzip |zip 將生成的文件名 - 可以將管道前的輸出結果轉為文件并壓縮。通過此方式壓縮的文件只能使用“unzip -p 壓縮包 > 新文件 ”來解壓縮 unzip -p 預覽解壓縮后的內容到屏幕,可以配置重定向將結果保存到指定文件,權限會發生變化。 2、文件的打包 生活中我們常見到文件以 .tar.xz結尾,這表示了它把多個文件用tar打包后進行了壓縮 (1)tar -cf 創建包名字 原文件(可以指定多個) -tf 包名字 顯示包中的文件名 -tvf 詳細顯示包中的文件名 -rf 包名字 新文件名(可以指定多個) --delete -f 包名字 被刪除的文件名(可以指定多個) eg:tar --delete -f sumfile.tar ./f{1..4} -xf 包名字 解出所有的文件到當前目錄 -xf 包名字 文件名 解所指定的文件到當前目錄 -C 解包到指定目錄 -v 顯示過程 -Jcf 創建包的名字(.tar.xz) 原文件(可以指定多個) 打包并用xz壓縮 -jcf 創建包的名字(.tar.bz2) 原文件(可以指定多個) 打包并用bzip壓縮 -zcf 創建包的名字(.tar.gz) 原文件(可以指定多個) 打包并用gzip壓縮 -T 指定個列表,包含需要被打包的文件,以換行符為間隔 -X 指定個排除列表,以換行符為間隔(不支持遞歸排除) 分割大的 tar 文件為多份小文件: split –b Size –d tar-file-name prefix-name 合并 cat 被分隔出的多個文件名 > 單個文件名 (2)cpio cpio 命令是通過重定向的方式將文件進行打包備份,還原恢復 的工具,它可以解壓以“.cpio” 或者“.tar” cpio [ 選項] > 文件名或者設備名 cpio [ 選項] < 文件名或者設備名 選項 -o 將文件拷貝打包成文件或者將文件輸出到設備上 -i 解包,將打包文件解壓或將設備上的備份還原到系統 -t 預覽,查看文件內容或者輸出到設備上的文件內容 -v 顯示打包過程中的文件名稱。 -d 解包生成目錄,在cpio 還原時,自動的建立目錄 -c 一種較新的存儲方式 將etc 目錄備份: find ./etc -print |cpio -ov >etc.cpio 內容預覽 cpio –tv < etc.cpio 要 解包 文件 cpio –idv < etc.cpio 3、參數替換 由于很多命令不 支持 管道|來傳遞參數,而日常工作 中有 這個必要,所以就有了xargs 命令 xargs 用于產生某個命令的參數,xargs 可以讀入 stdin 的數據,并且以空格符 或 回車符將stdin的數據分隔成為arguments 注意:文件 名 或者是其他意義的名詞內含有 空格符 的情況 有些命令不能接受過多參數 ,命令執行 可能會 失敗,xargs可以解決 示例: ls f* |xargs rm find /sbin -perm +700 |ls -l 這個命令是錯誤的 find /sbin -perm +7000 | xargs ls –l find 和xargs 格式:find | xargs COMMAND ---------------------------------------------------------------------------------------------------------------------- 練習:試著將find查找到的文件進行打包 法一:利用-T我們可以把find搜索到的列表里的文件打包,利用-X我們可以將若干保密文件規避掉 #find -maxdepth 1 -name "f[0-9]" >filelist.txt #echo ./f2 >except.txt [root@Centos7 test]#cat filelist.txt ./f1 ./f2 ./f3 ./f4 [root@Centos7 test]#cat except.txt ./f2 [root@Centos7 test]#tar -cvf file.tar -T filelist.txt -X except.txt [root@Centos7 test]#tar -tvf file.tar -rw-r--r-- root/root 18 2017-08-10 22:35 ./f1 -rw-r--r-- root/root 21 2017-08-10 22:36 ./f3 -rw-r--r-- root/root 11 2017-08-10 22:36 ./f4 可以發現filelist.txt列表里除了./f2(被-X 排除列表排除了)沒有被打包,其他均被打包在了file.tar里 法2:利用-exec把搜索到的文件直接打包 #find -name "f*" -exec tar -rvf sumfile.tar {} \; 注意:這里tar的選項是rvf,為什么是追加而不是創建呢? 因為-exec命令 會把查到的所有文件一 一傳遞給tar,如果是創建的話,每次創建都會覆蓋之前打包的文件, 到最后包里只能剩下一個文件。所以我們只能用追加的方法,將他們一 一添加至打包文件,當然這個包需要提前創建。 ----------------------------------------------------------------------------------------------------------------------------
轉載于:https://www.cnblogs.com/whblinux/p/7351338.html
總結
以上是生活随笔為你收集整理的linux 文件的压缩和打包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 中 and和or 一起使用和
- 下一篇: 【转】Linux如何在系统启动时自动加载