一、基礎介紹
Linux tar(tape archive)是一種在Unix和Linux系統下廣泛使用的文件壓縮和打包工具。tar能夠將多個文件或目錄打包成單個文件,並且支持許多壓縮格式(如gzip、bzip2、xz等)來減小文件大小,同時保留文件屬性和許可權等信息。
tar的使用非常簡單,通常的語法是:tar [選項] [目標文件/目錄]。其中一些常用的選項如下:
- -c:表示創建一個新的tar包
- -x:表示解包(extract)一個已有的tar包
- -z:表示使用gzip格式進行壓縮/解壓,默認是不壓縮的
- -j:表示使用bzip2格式進行壓縮/解壓
- -v:表示顯示詳細的打包/解包信息,方便調試
- -f:表示指定打包/解包的目標文件路徑,通常需要放在最後一個選項
二、打包和解包
tar最基本的功能就是將多個文件或目錄打包成單個文件,示例代碼如下:
tar -czvf backup.tar.gz /home/user/
上述代碼將/home/user/目錄及其下的所有文件和子目錄打包成backup.tar.gz壓縮文件。其中選項含義如下:
- -c:表示創建一個新的tar包
- -z:表示使用gzip格式進行壓縮,默認是不壓縮的
- -v:表示顯示詳細的打包信息
- -f:表示指定打包後的目標文件路徑,此處為backup.tar.gz
同樣的,解包已有的tar包也很簡單,示例代碼如下:
tar -xzvf backup.tar.gz
上述代碼將backup.tar.gz解壓到當前目錄下,默認還原成/home/user/目錄及其下的所有文件和子目錄。這裡選項含義如下:
- -x:表示解包(extract)一個已有的tar包
- -z:表示使用gzip格式進行解壓,根據文件後綴自動判斷壓縮格式
- -v:表示顯示詳細的解包信息
- -f:表示指定待解包的源文件路徑,此處為backup.tar.gz
三、選擇性打包
有時候我們並不需要打包一個目錄下的所有文件和子目錄,而是只需要選擇性地包含一些文件或目錄。這時候可以使用一些特定的選項來進行過濾,示例代碼如下:
tar -czvf backup.tar.gz --exclude=./exclude_dir/ ./include_dir/
上述代碼將只打包./include_dir/目錄及其下的文件和子目錄,新生成的壓縮包中不會包含./exclude_dir/目錄及其下的任何文件。這裡選項含義如下:
- –exclude:表示指定需要排除(exclude)的目錄或文件
- ./exclude_dir/:需要排除的目錄路徑,注意在路徑前面加一個./,以防止tar誤認為是一個選項
- ./include_dir/:需要打包的目錄路徑,不需要加./
類似的,tar還提供了一些其他的過濾選項,如–exclude-from、–files-from、–exclude-caches等,具體使用方法可以參考tar的官方文檔。
四、多卷打包和增量備份
在進行備份時,我們通常需要將備份數據存儲在多個介質中,以防止單個介質故障或文件過大的問題。tar提供了多卷打包(multi-volume archives)功能,允許將壓縮包分成固定大小的多個部分存儲,可以方便地存儲到多個磁碟或機器上。示例代碼如下:
tar -cM --tape-length=1000000 -f backup.tar /home/user/
上述代碼將/home/user/目錄及其下的所有文件和子目錄打包成多個1MB大小的部分文件(以默認的擴展名.tar-開始命名),並保存在backup.tar文件中。這裡選項含義如下:
- -c:表示創建一個新的tar包
- -M:表示啟用多卷打包功能,需要結合–tape-length選項一起使用
- –tape-length:表示指定每個部分文件的大小,此處為1MB
- -f:表示指定打包後的目標文件路徑,此處為backup.tar
除了多卷打包,tar還支持增量備份,可以將新增或變更的文件增量式地備份到一個已有的tar包中。示例代碼如下:
tar -c -g snapshot.file -f backup.tar /home/user/
上述代碼將/home/user/目錄及其下的所有文件和子目錄打包,並將打包過程中的文件元數據和時間戳保存在snapshot.file快照文件中,每次打包時只備份有變更的文件。這裡選項含義如下:
- -c:表示創建一個新的tar包
- -g:表示指定快照文件的路徑,存儲文件元數據
- -f:表示指定打包後的目標文件路徑,此處為backup.tar
五、壓縮和解壓縮
除了基本的打包和解包功能之外,tar還支持一些壓縮和解壓縮的選項,如gzip、bzip2、xz等,用來減小文件大小。示例代碼如下:
tar -czvf backup.tar.gz /home/user/ tar -xzf backup.tar.gz
上述代碼分別將/home/user/目錄及其下的所有文件和子目錄打包成gzip格式的backup.tar.gz壓縮文件,和解壓backup.tar.gz到當前目錄下。這裡選項含義與前面介紹的相同,只是加上了-z參數,表示使用gzip格式進行壓縮或解壓。
六、總結
本文深入介紹了Linux中常用的文件打包和壓縮工具tar,從基礎介紹、打包和解包、選擇性打包、多卷打包和增量備份、壓縮和解壓縮等多個方面進行了詳細的闡述。tar具有簡單、高效、可靠的特點,在Linux中有著廣泛的應用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/270271.html