簡體   English   中英

.tar文件的結構

[英]Structure of .tar files

我正在嘗試運行一些基准測試,以輸入tar文件。

現在,tar文件中有一個runme.sh,需要對其進行修改,並且必須將文件夾再次設置為.tar。

原始基准測試有效,但修改基准無效。 我認為這是文件格式的問題。

注意:我的修改沒有引起問題。 如果我只是解壓縮工作的tar並再次對其進行壓縮而不進行修改,則它將無法正常工作。 令人驚訝的是,新文件的大小發生了變化。

我試過了

  1. 正常和非正常tar文件上的file命令。 兩者都返回了相同的POSIX tar archive

  2. 試圖運行命令tar cvf folder_name.tar folder_name/不起作用。

什么有效:

我在Ubuntu(14.04)上,雙擊tar,直接編輯了想要的文件並進行了更新。 這可行,但不是可行的解決方案,因為我有大量文件,並且我想編寫一個腳本來使其自動化。

屏幕如何與G​​UI配合使用的屏幕截圖:

在此處輸入圖片說明

原始tar文件是否包含頂級目錄名稱? 從您的屏幕截圖來看,它看起來不像。 如果您使用頂層目錄重新創建tar文件(如嘗試中的第2點所示),則結構將不同,並且任何嘗試使用tar文件的程序都將無法使用解析它。

您如何測試“如果我只是解壓縮工作的tar,然后再次對其進行壓縮而不進行修改,那么它將無法正常工作。” 在GUI或Shell中? 如果在外殼中-您將使用哪些確切命令?

在shell中,可以使用命令tar -tf filename.tar獲得tarball的內容。 如果列出的所有文件都以相同的文件夾名稱開頭,則您的tarball包含一個頂層目錄。 如果僅列出各種文件和子目錄,則不會。 (這些球不是可憎的,但是如果您使用它們的目的是必需的,則只需應付。)

我猜想,如果您對原始tar文件和修改后的非工作tar文件執行此操作,結果將有所不同。

如果您需要/ 沒有頂層目錄的tarball,則以下命令應在shell中工作:

$ mkdir workdir
$ cd workdir
$ tar -xf ../tarball.tar
<edit your file however you like>
$ tar -cf ../tarball-new.tar *
$ cd ..
$ rm -r workdir

如果您已經/需要一個具有頂級目錄的tarball,以下內容就足夠了:

$ tar -xf ../tarball.tar
$ cd toplevel_directory
<edit your file however you like>
$ cd ..
$ tar -cf tarball-new.tar toplevel_directory
$ rm -r toplevel_directory

編輯:很高興它為您工作。 當然,關鍵是tar包含它存儲的文件的路徑,而不僅僅是文件名。 因此,如果您需要一個平面文件列表,則需要在包含這些文件的目錄中運行tar,並將所有文件作為tar參數提供。 如果您嘗試采用上一步的快捷方式,並且僅指定要打包的目錄名稱,則tar將在歸檔文件中包含目錄名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM