linux 打包大文件,tar打包处理大文件的解压缩方法
最近老遇到上傳大文件的問題,而網絡不穩定導致多次失敗,查找資料覺得下次很實用。
tar是文件打包工具,split是文件分割工具,在郵件中發送附件的時候,可能因為附件大小限制,需要壓縮并分割,分幾封郵件發送。如果需要備份很多資料的時候,打包后的單個文件可能超出文件系統支持的單個文件大小限制的時候,也需要分割成適合大小的文件包。剛好今天又要備份skype文件夾,所以就用這個實例來說明一下tar和split這兩個指令,如何壓縮、分割,再通過cat合并分割的文件解壓還原,以及在管道”|”配合下的打包分割文件過程。
例如:我的.skype文件已經有35M之多了,現在需要壓縮備份起來,直接用tar打包:用tar壓縮文件:
[marco.chan@linuxhobby backup]$ ls
skype_backup
[marco.chan@linuxhobby backup]$ tar -czvp -f skype_backup.tar.gz skype_backup
中間的打包壓縮輸出過程省略…
skype_backup/marco.chan.skype/chat512.dbb
skype_backup/marco.chan.skype/user4096.dbb
skype_backup/marco.chan.skype/chatmsg256.dbb
skype_backup/shared.xml
skype_backup/shared.lck
[marco.chan@linuxhobby backup]$ ls
skype_backup.tar.gz skype_backup
因為用了“-v”參數,所以中間會輸出打包壓縮的文件信息。
-c (create)當然是建立一個打包文件。
-z (gzip)調用gzip進行壓縮,建議后綴名為*.tar.gz;也可以用-j(bzip2),建議后綴名為*.tar.bz2。
-p (preserve-permissions)小寫的p,保持原先的文件屬性,也就是rwx屬性。
-f (file)輸出的目標文件“skype_backup.tar.gz” 將要被處理的源文件“skype_backup”,可以將-f連寫,但是為了容易記憶和區分,所以這里分開寫了。
打包后的skype_backup.tar.gz還有15M大小,但是我的郵件附件就支持6M大小,所以還得分割。splite分割文件:
[marco.chan@linuxhobby backup]$ split -b 4000k skype_backup.tar.gz skype_backup_20090626.tar.gz. –verbose
creating file `skype_backup_20090626.tar.gz.aa’
creating file `skype_backup_20090626.tar.gz.ab’
creating file `skype_backup_20090626.tar.gz.ac’
creating file `skype_backup_20090626.tar.gz.ad’
[marco.chan@linuxhobby backup]$ ls
skype_backup skype_backup_20090626.tar.gz.ac
skype_backup_20090626.tar.gz.aa skype_backup_20090626.tar.gz.ad
skype_backup_20090626.tar_20090626.gz.ab skype_backup.tar.gz
-b 指定分割大小,例如k,m等單位。
–verbose 輸出分割文件信息,可選。
skype_backup.tar.gz 被分割的文件。
skype_backup_20090626.tar.gz. 分割后的文件名(注意gz后面的”.”),如果不指定的話,默認是xaa,xab,xac。
現在通過tar,split,已經將skype_backup目錄文件打包、分割為每個最大為4M大小的壓縮包了。
以上是分步執行,如果用管道”|”,將tar,split寫成一個執行語句:使用管道“|”合并兩個指令:
[marco.chan@linuxhobby backup]$ tar -czvp -f – skype_backup |split -b 4000k – skype_backup_20090626.tar.gz. –verbose
[marco.chan@linuxhobby backup]$ ls
skype_backup
skype_backup_20090626.tar.gz.aa
skype_backup_20090626.tar.gz.ab
skype_backup_20090626.tar.gz.ac
skype_backup_20090626.tar.gz.ad
注意一下指令中的兩個“-”,如果分開執行,就不用”-”。為什么有這個”-”?man tar
-f, –file [HOSTNAME:]F
Use archive file or device F (default “-”, meaning stdin/stdout). Note that “/dev/stdout” is not equivalent to “-”.Using “/dev/stdout” explicitly can lead to corrupted archive, especially when coupled with “-v”.
如何解壓分割文件?
把文件分割了幾個包,當然也要能合并解壓了,合并文件當然用cat了,cat不僅僅是用來處理合并文本文件的,也可以用來合并壓縮文件。cat合并分割的文件:
[marco.chan@linuxhobby backup]$ cat skype_backup_20090626.tar.gz.a* >skype_backup_cat.tar.gz
將之前分割的壓縮包合并成skype_backup_cat.tar.gz,然后可以通過tar -zxvf來解壓skype_backup_cat.tar.gz,通過管道”|”可寫成:使用管道“|”合并兩個指令:
[marco.chan@linuxhobby backup]$ cat skype_backup_20090626.tar.gz.a* |tar -zxv
關于更多的tar、split、cat指令應用,建議通過man查詢。
總結
以上是生活随笔為你收集整理的linux 打包大文件,tar打包处理大文件的解压缩方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArcGIS打开shapefile失败:
- 下一篇: 【MySQL】关系型数据库基本知识点