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

Sk發表於2018-06-01

在我們之前的教程中,我們討論瞭如何使用 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 的資料夾,其中包含三種不同型別的檔案。

$ ls ostechnix/
file.odt image.png song.mp3

現在,讓我們為 ostechnix 目錄建立一個新的 tar 歸檔。

$ tar cf ostechnix.tar ostechnix/

這裡,c 標誌指的是建立新的歸檔,f 是指定歸檔檔案。

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

$ tar cf archive.tar file1 file2 file 3

提取歸檔

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

$ tar xf ostechnix.tar

我們還可以使用 C 標誌(大寫字母 C)將歸檔提取到不同的目錄中。例如,以下命令將歸檔檔案提取到 Downloads 目錄中。

$ tar xf ostechnix.tar -C Downloads/

或者,轉到 Downloads 資料夾並像下面一樣提取其中的歸檔。

$ cd Downloads/
$ tar xf ../ostechnix.tar

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

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

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

預設情況下,tar 建立歸檔檔案以 .tar 結尾。另外,tar 命令可以與壓縮實用程式 gzipbzip 結合使用。檔案結尾以 .tar 為副檔名使用普通 tar 來歸檔檔案,檔案以 tar.gz.tgz 結尾使用 gzip 歸檔並壓縮檔案,檔案以 tar.bz2.tbz 結尾使用 bzip 歸檔並壓縮。

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

$ tar czf ostechnix.tar.gz ostechnix/

或者:

$ tar czf ostechnix.tgz ostechnix/

這裡,我們使用 z 標誌來使用 gzip 壓縮方法壓縮歸檔檔案。

你可以使用 v 標誌在建立歸檔時檢視進度。

$ tar czvf ostechnix.tar.gz ostechnix/
ostechnix/
ostechnix/file.odt
ostechnix/image.png
ostechnix/song.mp3

這裡,v 指顯示進度。

從一個檔案列表建立 gzip 歸檔檔案:

$ tar czf archive.tgz file1 file2 file3

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

$ tar xzf ostechnix.tgz

要提取到其他資料夾,使用 -C 標誌:

$ tar xzf ostechnix.tgz -C Downloads/

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

建立一個目錄的歸檔:

$ tar cjf ostechnix.tar.bz2 ostechnix/

$ tar cjf ostechnix.tbz ostechnix/

從一個列表檔案中建立歸檔:

$ tar cjf archive.tar.bz2 file1 file2 file3

$ tar cjf archive.tbz file1 file2 file3

為了顯示進度,使用 v 標誌。

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

$ tar xjf ostechnix.tar.bz2

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

$ tar xjf ostechnix.tar.bz2 -C Downloads

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

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

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

上述命令建立 DownloadsDocuments 目錄和 ostechnix 目錄下的 file.odt 檔案的歸檔,並將歸檔儲存在當前工作目錄中。

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

這在備份資料時非常有用。你可以在備份中排除不重要的檔案或目錄,這是 –exclude 選項所能幫助的。例如你想要建立 /home 目錄的歸檔,但不希望包括 DownloadsDocumentsPicturesMusic 這些目錄。

這是我們的做法:

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

上述命令將對我的 $HOME 目錄建立一個 gzip 歸檔,其中不包括 DownloadsDocumentsPicturesMusic 目錄。要建立 bzip 歸檔,將 z 替換為 j,並在上例中使用副檔名 .bz2

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

要列出歸檔檔案的內容,我們使用 t 標誌。

$ tar tf ostechnix.tar
ostechnix/
ostechnix/file.odt
ostechnix/image.png
ostechnix/song.mp3

要檢視詳細輸出,使用 v 標誌。

$ tar tvf ostechnix.tar
drwxr-xr-x sk/users 0 2018-03-26 19:52 ostechnix/
-rw-r--r-- sk/users 9942 2018-03-24 13:49 ostechnix/file.odt
-rw-r--r-- sk/users 36013 2015-09-30 11:52 ostechnix/image.png
-rw-r--r-- sk/users 112383 2018-02-22 14:35 ostechnix/song.mp3

追加檔案到歸檔

檔案或目錄可以使用 r 標誌新增/更新到現有的歸檔。看看下面的命令:

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

上面的命令會將名為 sk 的目錄和名為 exmple.txt 新增到 ostechnix.tar 歸檔檔案中。

你可以使用以下命令驗證檔案是否已新增:

$ tar tvf ostechnix.tar
drwxr-xr-x sk/users 0 2018-03-26 19:52 ostechnix/
-rw-r--r-- sk/users 9942 2018-03-24 13:49 ostechnix/file.odt
-rw-r--r-- sk/users 36013 2015-09-30 11:52 ostechnix/image.png
-rw-r--r-- sk/users 112383 2018-02-22 14:35 ostechnix/song.mp3
drwxr-xr-x sk/users 0 2018-03-26 19:52 sk/
-rw-r--r-- sk/users 0 2018-03-26 19:39 sk/linux.txt
-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 歸檔: tar -xf archive.tar
  • Gzip tar 歸檔: tar -xzf archive.tgz
  • Bzip tar 歸檔: tar -xjf archive.tbz

我們只介紹了 tar 命令的基本用法,這些對於開始使用 tar 命令足夠了。但是,如果你想了解更多詳細資訊,參閱 man 手冊頁。

$ man tar

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

乾杯!


via: https://www.ostechnix.com/how-to-archive-files-and-directories-in-linux-part-1/

作者:SK 選題:lujun9972 譯者:MjSeven 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章