linux歸檔是什么意思

linux歸檔是一個聚集眾多文件并將它們組合為一個大文件的過程,它通常作為系統備份的一部分,而且通常也用于將舊數據從某個系統移到某些長期存儲設備的情況下;tar命令可以為linux的文件和目錄創建檔案。

linux歸檔是什么意思

本教程操作環境:linux5.9.8系統、Dell G3電腦。

linux歸檔是什么意思?

歸檔是與壓縮操作配合使用的一個常用文件管理任務。歸檔是一個聚集眾多文件并將它們組合為一個大文件的過程,它通常作為系統備份的一部分,而且通常也用于將舊數據從某個系統移到某些長期存儲設備的情況下。

tar命令可以為linux的文件和目錄創建檔案。利用tar,可以為某一特定文件創建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上創建檔案,現在,用戶可以在任何設備上創建檔案。利用tar命令,可以把一大的文件和目錄全部打包成一個文件,這對于備份文件或將幾個文件組合成為一個文件以便于網絡傳輸是非常有用的。

Linux tar命令

tar命令是linux上將 多個文件打包程一個文件包。方便傳輸,也可以用于文件備份。我們也可以用tar來解壓歸檔文件。

tar命令壓縮格式

tar命令支持的壓縮格式,一般我們在使用tar命令的時候會同時對文件壓縮,以降低空間使用率。通常我們會采用以下命名規范來約定我們使用了哪種壓縮方式。

.tar 默認模式,不壓縮,只是將所有文件放到一個包里。

.tar.gz 常用模式,采用gzip算法壓縮。壓縮率一般,壓縮時間中等。

.tar.bz2 不常用。采用bz2算法壓縮。壓縮率稍差,壓縮時間較短。

.tar.xz 不常用,采用xz算法壓縮。壓縮率較好,壓縮時間較長。

tar概要簡介

tar語法介紹

?

tar 一般支持以下兩種語法格式,第二種是舊的方式。

tar?OPTION...?[NAME]... tar?LETTER...?[ARGUMENT]...?[OPTION]...?[NAME]...

?tar的主要參數,我們稱之為【操作類型】:例如,c創建,x解壓。其他的參數我們稱之為【附加選項】,用來改變我們操作的進展方式例如文件名字,待歸檔的目標文件。

主要參數 【操作類型】一定要放在最前方。

兩種語法格式中的[NAME]都是指明我們要待歸檔的文件名字,[NAME]可以是文件或者目錄,或者是多個文件或目錄。 [NAME]一定要指定明確,而且在我們執行tar命令之前一定是要已經存在與文件系統上。

tar的其他知識介紹

tar “將相對路徑的文件名解釋為相對目錄。如果我們指定了絕對路徑, tar會將首個/去掉來進行打包。這么做的目的是為了防止解壓的時候替換掉系統目錄。除非我們故意指定【–absolute-names】選項。

如果我們指定的是一個目錄的話,tar會遞歸指定目錄下所有的子目錄和文件來進行歸檔,例如我們指定/,意思就是整個文件系統都將要被歸檔。

在使用shell通配符的時候區別文件名字和待歸檔成員是非常重要的。原因在于,shell只會對存在的文件使用通配符, tar自己也會對歸檔成員使用通配,所以我們必須保證通配符只針對tar起作用,而不是shell.通常我們可以使用反斜杠在 “*”或“?”或者放在單引號中,這樣舊可以了

通常我們都會把支隊的文件放在命令行上,實際上我們也可以通過讀文件的方式來指定歸檔后的文件名。’–files-from=FILE-OF-NAMES’ (‘-T FILE-OF-NAMES’)

如果我們不指定歸檔后的文件名,那么 追加,刪除,等操作命令不會做任何操作。create會輸出一個診斷信息,并阻止tar操作。其他的操作選項會對整個archive目錄操作

除了正常成功退出,tar會因為很多原因失敗。有的情況是可以恢復的,例如當tar命令不是正常組織書寫時,錯誤會推遲到直到文件處理完會報告出來。.有的錯誤可能不是故意的,但是還是有危險,那么接下來,tar會立即退出。

然而所有非正常的退出,不論是立即的還是推遲的,都會有錯誤輸出,并且會有診斷信息。

可能的tar程序退出碼有:0(正常退出),1(有文件發生變化了),2(嚴重錯誤,不可恢復的錯誤)

tar選項風格

三種選項風格

標準tar命令一共支持8種操作模式讓我們去完成多樣任務。每次使用tar命令我們只能選擇一種操作模式。根據實際情況,我們可能會希望指定tar操作模式的運行。例如我們可能修改outputs的輸出格式。或者我們想要文件格式需要我們去特殊指定操作順序。

tar選項是在我們指定tar操作模式后附加的選項。根據tar的操作模式,我們可以指定一個或多個選項。不同的選項有不同的作用,通常情況下,選項會修改該操作模式具體內容。例如修改歸檔格式,歸檔文件名,或者用戶交互級別。

有些選項對所有操作模式都會有效,有些選項只對特定的操作模式有效。我們會經常使用一些固定的選項。其他的可能很少用到,或基本不會用到。

選項是大小寫敏感的,例如-T和-t是不同的,T要求一個參數名字來指明文件名或文件列表。t則不需要參數 ,是–list的另一種書寫方式。

tar選項通常支持3中不同的風格: 長命名型(–),短命名型(-),舊命名方式(沒有-)。操作模式或選項都可以使用任意一種風格。3中不同的風格是在不同的時期開發出來嘚。

有些選項是需要一個參數的,在哪里放置參數,通常的時候需要根據我們使用哪種風格。這些區別可能是微妙的,但是卻很重要。選項放置在錯誤的位置,可能會導致覆蓋一些重要的文件。我們必須要注意到這些不同點。而且只使用我們所了解的選項,直到我們對其他的選項也了解了。那些需要接收參數的選項,他們可能會有最長或短的形式,而沒有舊風格的對應選項。使用這些需要指定參數的選項的規則是非常嚴謹的。

例如–file選項需要接收一個歸檔文件名作為參數。如果我們不指定歸檔文件名,tar會使用一個默認的但另我們困惑名字,建議我們一定要指定一個具體的歸檔文件名字。

長命名選項風格

tar所有的參數選項都至少有一個長命名型的參數。長命名參數選項比短命名和舊參數名字類型顯示更加的清晰。有的時候長名字選項會有不同的名字但是卻是相同的作用,例如–compare和–dif是同一個意思。另外長命名方式,也可以使用唯一的縮寫,例如–create可以用–cre來代替。因為沒有其他的選項以–cre開頭。

tar 長命名選項更加的明顯和容易記憶,而且他們的名字也容易辨認。例如 tar –create –verbose –blocking-factor=20 –file=/dev/rmt0,全部使用的是長命名型參數,可以顯而易見的看出每個參數的含義。

長命名選項必須接收參數的話,要立即在該選項后面書寫, 有兩種方式去指定必須的參數,一種是使用空格,另一種是使用=符號。例如–file選項我們可以使用–file archive.tar 或者–file=archive.tar兩種方式來制定參數。

對應地,如果選項可以接收也可以不接收參數的話。這種情況下如果要接收參數,必須使用=符號來指定。例如 –backup 可選接收參數。如果要指定的話,必須使用’–backup=BACKUP-TYPE’.

短命名選項風格

?大多數的選項也有對應的短命名選項,短命名選項使用-符號,并且緊跟一個字母。例如 -t(對應長命名選項–list),這些形式在功能上是完全相同的,可以互換。

?相對于長命名選項,短命名方式一個明顯的優點就是書寫很方便。

短命名選項如果需要在選項后面立即接收參數的話,通常以空格來實現。 也可以省略空格,立即接著選項書寫,例如指定歸檔名字 我們可以使用-f archive.tar(有空格) -farchive.tar(省略空格),–file=archive.tar. -f ARCHIVE-NAME和–file=ARCHIVE-NAME都表示這個選項指定了歸檔文件名。

有可選參數的短命名選項,如果要指定參數的時候,需要參數緊跟短選項名字,不能使用任何空格。

短命名選項可以放在一起書寫,但不是要求的。當短選項以集合成片出現時,僅在選項開始使用一個-,例如tar -cvf,同時只有最后一個選項允許接收必須參數。(將許多選項集中在一起,最后一個選項有一個參數,這是一種相當不透明的寫法。)

當選項分開使用時,每個選項的參數需要緊跟著該選項。? tar -c -v -b 20 -f /dev/rmt0。如果參數沒有調整好,可能會導致文件被覆蓋。

當我們重新調整選項時,要注意同時移動屬于該選項的參數。

?

舊選項風格

像短命名選項一樣,舊選項風格也只有一個字母。但是,舊風格選項必須將所有選項放在一起,不得有空格將他們分開,或者-連接他們。在tar命令和空格之后,比較緊跟這些字母選項的集合。舊選項不能在任意地方出現。舊選項風格的選項和短命名風格的選項含義是一樣的。例如 在舊選項風格中,選項 t 和 短命名選項-t 已經長命名選項–list有一樣的作用。 tar cv 命令中,選項v是c選項的額外附加內容。

在舊選項風格中,但選項需要參數的時候,這些選項要一起提供,所有的選項按選項書寫順序提供。例如? tar -c -v -b 20 -f /dev/rmt0? 要寫成 tar cvbf 20 /dev/rmt0這里20是b選項的參數 /dev/rmnt0是f的參數。

我們可以看出,舊風格選項,匹配選項字母和對應的參數是很困難的,而且很容易令人困惑。短命名方式逗比舊命名方式要好很多。如果要調整選項的字母,必須要同時準確地調整對應的參數位置。

舊選項風格有的時候甚至可以震驚一個熟悉的用戶。

tar cfz archive.tar.gz file? 這個例子中 archive.tar.gz 被認為是f的參數,z是壓縮選項。

tar -cfz archive.tar.gz file 這個例子中 z會被認為是f的選項值,盡管不是我們想的。

舊選項風格是為了向下兼容而保留的。而且很多用戶已經習慣了這種方式。

第二個例子我們有幾種方式來修改。

tar?-czf?archive.tar.gz?file tar?-cf?archive.tar.gz?-z?file tar?cf?archive.tar.gz?-z?file

通常tar命令的第一個選項一般都會當做包含操作模式和選項來對待處理,盡管沒有用-開始。因此 tar c與tar -c一樣,都是和–create一樣來創建歸檔。

混合選項風格

三種選項風格可以同時出現在一條tar 命令中,但是舊選項必須在tar命令后 第一個出現,現代風格的選項必須在舊選項集合輸入之后出現,這個是必須遵守的原則,否則可能我們輸入的命令跟我們預想的結果根本不一樣。可能會造成嚴重的錯誤或災難。

?tar選項

操作模式

‘–concatenate’? ‘–catenate’ ‘-A’ 將其他歸檔文件放在當前歸檔文件末尾

‘–append’ ‘ -r’? 追加文件到歸檔文件

‘–compare’? ‘–diff’? ‘-d’? 將歸檔文件和文件系統上的文件進行對比

‘–create’ ‘-c’ 創建一個歸檔文件

‘–delete’ 從歸檔文件中刪除一些文件。(不能在tape上操作)

‘–extract’ ‘–get’ ‘-x’ 提取歸檔文件到當前文件系統

‘–list’? ‘-t’ 顯示歸檔文件的組成文件列表

‘–update’? ‘-u’ 更新歸檔文件中的某個文件,只有在該文件有更新時。或者不存在與歸檔文件。

?

通用選項

-C, –Directory=DIR? 改變工作目錄。

-f, –file=ARCHIVE? 指定歸檔文件名

-j, –bzip2? 使用bzip2壓縮方式過濾

-J, –xz? 使用xz壓縮方式過濾

-p, –preserve-permissions 解壓時保留文件的權限。

-v, –verbose 詳細的列出處理的文件

-z, –gzip? 使用gzip壓縮方式過濾

提取時覆蓋選項

–remove-files 提取歸檔后刪除歸檔文件

-k –keep-old-files 執行的時候不覆蓋已經存在的文件,會輸出錯誤

–keep-newer-files 執行的時候不覆蓋比archive里文件新的文件

–keep-directory-symlink 不把已經存在的連接替換成目錄

–no-overwrite-dir 保存已經存在的目錄的原信息

–overwrite? 覆蓋已經存在的文件

–overwrite-dir 覆蓋已經存在的目錄

–recursive-unlink 在提取目錄文件前清除該目錄結構

–skip-old-files 不替換已經存在的文件。靜默方式跳過

-U, –unlink-first 在提取之前先刪除所有文件

-W, –verify 校驗

?

處理文件的屬性

–atime-preserve[=METHOD]? 保存文件atime到歸檔文件

–delay-directory-restore 直到解壓完才改變目錄的時間戳屬性

–group=NAME 強制修改文件所屬組

–mode=CHANGES 強制連接模式修改

–mtime=DATE-OR-FILE 修改文件的mtime

-m, –touch 不提取文件的 mtime

–no-delay-directory-restore 取消delay-directory-restore

–no-same-owner? extract files as yourself (default for ordinary users)

–no-same-permissions? apply the user’s umask when extracting permissions from the archive (default for ordinary users)

–numeric-owner 使用number來表示owner和group

–owner=NAME? 修改歸檔的文件的owner

-p, –preserve-permissions, –same-permissions 保留文件的屬性

–preserve? 保留文件的屬性 same as both -p and -s

–same-owner? 保留文件的屬性

-s, –preserve-order, –same-order 保留文件的屬性

?

本地目錄文件的選擇

–add-file=FILE 最加文件到歸檔中如果一個文件名字以-開始

–backup[=CONTROL]? 刪除之前先備份

-C, –directory=DIR 修改工作目錄到指定目錄

–exclude=PATTERN 排除一些文件

–exclude-backups 排除掉 備份和鎖文件

–exclude-caches 排除掉cache(CACHEDIR.TAG)的目錄其他文件,除了tagfile

–exclude-caches-all? 排除掉包括CACHEDIR.TAG的目錄

–exclude-caches-under 排除掉所有有tagfile的目錄的其他文件,但是有目錄

–exclude-tag=FILE 排除掉指定含義某文件的目錄,除了該文件

exclude contents of directories containing FILE, except for FILE itself

–exclude-tag-all=FILE exclude directories containing FILE 排除掉有某文件的整個目錄

–exclude-tag-under=FILE 排除掉有某文件的目錄里的所有內容

–exclude-vcs? 排除掉vcs版本控制的目錄

-h, –dereference 保存軟連 ,將目標文件也歸檔起來

follow symlinks; archive and dump the files they point to

–hard-dereference 保存硬軟連 ,將目標文件也歸檔起來

-K, –starting-file=MEMBER-NAME 以目錄中某個文件開始歸檔,前面的文件不歸檔

–newer-mtime=DATE 當內容修改時,對比文件的日期和時間

-P, –absolute-names? 以絕對路徑來打包。提取時會覆蓋源文件–recursion

–suffix=String 刪除之前先備份,以設置的前綴來覆蓋

-X, –exclude-from=FILE? ? 排除掉指定文件里的約定的文件

推薦學習:《Linux視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享