天天看點

在 Linux 中如何歸檔檔案和目錄

在我們之前的教程中,我們讨論了如何 使用 gzip 和 bzip2 壓縮和解壓縮檔案 。在本教程中,我們将學習如何在 Linux 歸檔檔案。歸檔和壓縮有什麼不同嗎?你們中的一些人可能經常認為這些術語有相同的含義。但是,這兩者完全不同。歸檔是将多個檔案和目錄(相同或不同大小)組合成一個檔案的過程。另一方面,壓縮是減小檔案或目錄大小的過程。歸檔通常用作系統備份的一部分,或者将資料從一個系統移至另一個系統時。希望你了解歸檔和壓縮之間的差別。現在,讓我們進入主題。 歸檔檔案和目錄 歸檔檔案和目錄最常見的程式是:

  1. tar
  2. zip

這是一個很大的話題,是以,我将分兩部分發表這篇文章。在第一部分中,我們将看到如何使用 tar 指令來歸檔檔案和目錄。

使用 tar 指令歸檔檔案和目錄

Tar 是一個 Unix 指令,代表 Tape Archive(錄音帶歸檔)。它用于将多個檔案(相同或不同大小)組合或存儲到一個檔案中。在 tar 實用程式中有 4 種主要的操作模式。

  1. c

     – 從檔案或目錄中建立歸檔
  2. x

     – 提取歸檔
  3. r

     – 将檔案追加到歸檔
  4. t

     – 列出歸檔的内容

有關完整的模式清單,參閱 man 手冊頁。

建立一個新的歸檔

為了本指南,我将使用名為 

ostechnix

 的檔案夾,其中包含三種不同類型的檔案。

  1. $ ls ostechnix/

  2. file.odt image.png song.mp3

現在,讓我們為 

ostechnix

 目錄建立一個新的 tar 歸檔。

  1. $ tar cf ostechnix.tar ostechnix/

這裡,

c

 标志指的是建立新的歸檔,

f

 是指定歸檔檔案。

同樣,對目前工作目錄中的一組檔案建立歸檔檔案,使用以下指令:

  1. $ tar cf archive.tar file1 file2 file 3

提取歸檔

要在目前目錄中提取歸檔檔案,隻需執行以下操作:

  1. $ tar xf ostechnix.tar

我們還可以使用 

C

 标志(大寫字母 C)将歸檔提取到不同的目錄中。例如,以下指令将歸檔檔案提取到 

Downloads

 目錄中。

  1. $ tar xf ostechnix.tar -C Downloads/

或者,轉到 

Downloads

 檔案夾并像下面一樣提取其中的歸檔。

  1. $ cd Downloads/

  2. $ tar xf ../ostechnix.tar

有時,你可能想要提取特定類型的檔案。例如,以下指令提取 “.png” 類型的檔案。

  1. $ tar xf ostechnix.tar --wildcards "*.png"

建立 gzip 和 bzip 格式的壓縮歸檔

預設情況下,tar 建立歸檔檔案以 

.tar

 結尾。另外,

tar

 指令可以與壓縮實用程式 

gzip

 和 

bzip

 結合使用。檔案結尾以 

.tar

 為擴充名使用普通 tar 來歸檔檔案,檔案以 

tar.gz

 或 

.tgz

 結尾使用 

gzip

 歸檔并壓縮檔案,檔案以 

tar.bz2

.tbz

bzip

 歸檔并壓縮。

首先,讓我們來建立一個 gzip 歸檔:

  1. $ tar czf ostechnix.tar.gz ostechnix/

或者:

  1. $ tar czf ostechnix.tgz ostechnix/

這裡,我們使用 

z

 标志來使用 gzip 壓縮方法壓縮歸檔檔案。

你可以使用 

v

 标志在建立歸檔時檢視進度。

  1. $ tar czvf ostechnix.tar.gz ostechnix/

  2. ostechnix/

  3. ostechnix/file.odt

  4. ostechnix/image.png

  5. ostechnix/song.mp3

v

 指顯示進度。

從一個檔案清單建立 gzip 歸檔檔案:

  1. $ tar czf archive.tgz file1 file2 file3

要提取目前目錄中的 gzip 歸檔檔案,使用:

  1. $ tar xzf ostechnix.tgz

要提取到其他檔案夾,使用 

-C

 标志:

  1. $ tar xzf ostechnix.tgz -C Downloads/

現在,讓我們建立 bzip 歸檔。為此,請使用下面的 

j

 标志。

建立一個目錄的歸檔:

  1. $ tar cjf ostechnix.tar.bz2 ostechnix/

  1. $ tar cjf ostechnix.tbz ostechnix/

從一個清單檔案中建立歸檔:

  1. $ tar cjf archive.tar.bz2 file1 file2 file3

  1. $ tar cjf archive.tbz file1 file2 file3

為了顯示進度,使用 

v

現在,在目前目錄下,讓我們提取一個 bzip 歸檔。這樣做:

  1. $ tar xjf ostechnix.tar.bz2

或者,提取歸檔檔案到其他目錄:

  1. $ tar xjf ostechnix.tar.bz2 -C Downloads

一次建立多個目錄和/或檔案的歸檔

這是 

tar

 指令的另一個最酷的功能。要一次建立多個目錄或檔案的 gzip 歸檔檔案,使用以下檔案:

  1. $ tar czvf ostechnix.tgz Downloads/ Documents/ ostechnix/file.odt

上述指令建立 

Downloads

、 

Documents

 目錄和 

ostechnix

 目錄下的 

file.odt

 檔案的歸檔,并将歸檔儲存在目前工作目錄中。

在建立歸檔時跳過目錄和/或檔案

這在備份資料時非常有用。你可以在備份中排除不重要的檔案或目錄,這是 

–exclude

 選項所能幫助的。例如你想要建立 

/home

 目錄的歸檔,但不希望包括 

Downloads

Documents

Pictures

Music

 這些目錄。

這是我們的做法:

  1. $ tar czvf ostechnix.tgz /home/sk --exclude=/home/sk/Downloads --exclude=/home/sk/Documents --exclude=/home/sk/Pictures --exclude=/home/sk/Music

上述指令将對我的 

$HOME

 目錄建立一個 gzip 歸檔,其中不包括 

Downloads

Documents

Pictures

Music

 目錄。要建立 bzip 歸檔,将 

z

 替換為 

j

,并在上例中使用擴充名 

.bz2

列出歸檔檔案但不提取它們

要列出歸檔檔案的内容,我們使用 

t

  1. $ tar tf ostechnix.tar

  2. ostechnix/

  3. ostechnix/file.odt

  4. ostechnix/image.png

  5. ostechnix/song.mp3

要檢視詳細輸出,使用 

v

  1. $ tar tvf ostechnix.tar

  2. drwxr-xr-x sk/users 0 2018-03-26 19:52 ostechnix/

  3. -rw-r--r-- sk/users 9942 2018-03-24 13:49 ostechnix/file.odt

  4. -rw-r--r-- sk/users 36013 2015-09-30 11:52 ostechnix/image.png

  5. -rw-r--r-- sk/users 112383 2018-02-22 14:35 ostechnix/song.mp3

追加檔案到歸檔

檔案或目錄可以使用 

r

 标志添加/更新到現有的歸檔。看看下面的指令:

  1. $ tar rf ostechnix.tar ostechnix/ sk/ example.txt

上面的指令會将名為 

sk

 的目錄和名為 

exmple.txt

 添加到 

ostechnix.tar

 歸檔檔案中。

你可以使用以下指令驗證檔案是否已添加:

  1. $ tar tvf ostechnix.tar

  2. drwxr-xr-x sk/users 0 2018-03-26 19:52 ostechnix/

  3. -rw-r--r-- sk/users 9942 2018-03-24 13:49 ostechnix/file.odt

  4. -rw-r--r-- sk/users 36013 2015-09-30 11:52 ostechnix/image.png

  5. -rw-r--r-- sk/users 112383 2018-02-22 14:35 ostechnix/song.mp3

  6. drwxr-xr-x sk/users 0 2018-03-26 19:52 sk/

  7. -rw-r--r-- sk/users 0 2018-03-26 19:39 sk/linux.txt

  8. -rw-r--r-- sk/users 0 2018-03-26 19:56 example.txt

TL;DR

建立 tar 歸檔:

  • 普通 tar 歸檔: 

    tar -cf archive.tar file1 file2 file3

  • Gzip tar 歸檔: 

    tar -czf archive.tgz file1 file2 file3

  • Bzip tar 歸檔: 

    tar -cjf archive.tbz file1 file2 file3

提取 tar 歸檔:

  • tar -xf archive.tar

  • tar -xzf archive.tgz

  • tar -xjf archive.tbz

我們隻介紹了 

tar

 指令的基本用法,這些對于開始使用 

tar

 指令足夠了。但是,如果你想了解更多詳細資訊,參閱 man 手冊頁。

  1. $ man tar

好吧,這就是全部了。在下一部分中,我們将看到如何使用 Zip 實用程式來歸檔檔案和目錄。

原文釋出時間為:2018-06-1

本文作者:SK

本文來自雲栖社群合作夥伴“

Linux中國開源社群

”,了解相關資訊可以關注“

”。

繼續閱讀