tar
位於 utils
包(package)。 說明
創建一個 tar 存檔。
用法
tar(tarfile, files = NULL,
compression = c("none", "gzip", "bzip2", "xz"),
compression_level = 6, tar = Sys.getenv("tar"),
extra_flags = "")
參數
tarfile |
tar 文件的路徑名:將執行波浪號擴展(請參閱 |
files |
要歸檔的文件路徑的字符向量:默認為歸檔當前目錄下的所有文件。 |
compression |
給出要使用的壓縮類型的字符串(默認無)。可以縮寫。 |
compression_level |
整數:壓縮級別。僅用於內部方法。 |
tar |
字符串:要使用的命令的路徑。如果命令本身包含空格,則需要用引號引起來(例如,用 |
extra_flags |
外部 |
細節
這是一個包裝器tar
命令或使用內部實現R。如果使用後者tarfile
是一個連接或者如果參數tar
是"internal"
或者""
(默認為“factory-fresh”)。請注意,雖然 Unix 類似版本R設置環境變量TAR,它的值不是該函數的默認值。
參數extra_flags
被傳遞到外部tar
也是依賴於平台的。可能有用的值包括-H(遵循符號鏈接,也-L在某些平台上),‘--acls’,--exclude-backups,--exclude-vcs(和類似)和 Windows 上--force-local(因此驅動器可以包含在文件路徑中)。Rtools
4 及更早版本包括tar
其中使用了--force-local, 但Rtools
4.2 包括原始 GNUtar
,默認情況下不使用它。
為 GNU 設置選項的便捷且可靠的方法tar
是通過環境變量TAR_OPTIONS。追加--force-local到TAR不適用於 GNUtar
由於某些選項的混合方式受到限製。這tar
可在 Windows 10 上使用(libarchive 的bsdtar
) 默認支持驅動器號。它不支持--force-local,但忽略TAR_OPTIONS.
對於 GNUtar
,--格式=ustar強製采用更便攜的格式。 (默認值是在編譯時設置的,並將顯示在輸出的末尾tar --help
:對於版本 1.30 ‘out-of-the-box’ 是--格式=gnu,但手冊說目的是改為--格式=posix這與以下相同pax
- 它從來都不是 POSIX 標準的一部分tar
並且不應該使用。)對於 libarchive 的bsdtar
,--格式=ustar比默認的更便攜。
可能導致外部命令失敗的一個問題是命令行對於係統 shell 來說太長:R3.5.0 如果檢測到外部命令是 GNU,則可以解決此問題tar
或libarchivetar
(又名bsdtar
)。
請注意,files = '.'
通常無法與外部 tar
一起使用,因為這會在創建 tarfile
後擴展文件列表。 (它確實適用於默認的內部方法。)
值
內部版本的 system
或 0
的返回代碼是不可見的。
可移植性
‘tar’ 格式不再有商定的標準! “Unix Standard Tar”是 POSIX 1003.1:1998 的一部分,但已被刪除,以支持 pax
,並且無論如何,許多常見的實現都偏離了以前的標準。
許多R平台使用 GNU 版本tar
,但每個版本的行為似乎都發生了變化。 macOS >= 10.6、FreeBSD 和 Windows 10 使用bsdtar
來自 libarchive 項目(但對於 macOS 為 2017 年或更早版本,對於 High Sierra 為 2010 年),商業 Unix 將有自己的版本。bsdtar
適用於許多其他平台:macOS 至少 10.9 有 GNUtar
作為gnutar
以及其他平台,例如Solaris,將其作為gtar
: 在類 Unix 係統上configure
會嘗試gnutar
和gtar
前tar
.
已知問題源自
-
超過100字節的文件路徑的處理。這些在
tar
的早期版本中不受支持,並且以一種方式由 POSIXtar
支持,以另一種方式由 GNUtar
以及另一種方式由最近的tar
程序經常支持的 POSIXpax
命令支持。內部實現對超過 100 字節的路徑發出警告,如果可能,使用 1998 POSIX 標準中的 ‘ustar’ 方式,最多支持 256 字節(取決於路徑:特別是最終組件限製為 100 字節),否則GNU 方式(得到廣泛支持,包括untar
)。大多數格式不記錄文件路徑的編碼。
-
(文件)鏈接。
tar
是在使用硬鏈接的操作係統上開發的,在要包含的文件列表中多次引用的物理文件僅包含一次,其餘實例將作為鏈接添加。後來添加了包含符號鏈接的方法。內部實現僅支持符號鏈接(在支持它們的操作係統上)。當然,問題是如何在不支持鏈接的操作係統上解壓鏈接:對於常規文件,可以使用文件副本。‘ustar’ 格式的鏈接名稱限製為 100 個字節。有一個針對任意長鏈接名稱的 GNU 擴展,但
bsdtar
會忽略它。內部方法使用 GNU 擴展,並帶有警告。 -
標頭字段,特別是字段未滿或未使用時要使用的填充。 POSIX 確實定義了正確的行為,但常用的實現確實(並且仍然)不符合。
-
文件大小。 ‘ustar’ 格式每個(未壓縮)文件的大小限製為 8GB。
為了可移植性,請避免超過 100 字節的文件路徑和所有鏈接(尤其是目錄的硬鏈接和符號鏈接)。
與 GNU 不同,內部實現僅寫入所需的 512 字節塊(包括 nul 的尾隨塊)tar
默認情況下用‘填充無’ 為 20 塊 (10KB) 的倍數。 pad 的實現在塊填充是否應在壓縮之前或之後(或兩者)發生方麵有所不同:填充旨在提高物理磁帶驅動器的性能。
‘ustar’ 格式以 1 秒的分辨率記錄文件修改時間:在具有更高分辨率的文件係統上,通常會丟棄小數秒。
壓縮
當外部tar
使用命令時,壓縮 tar 存檔需要tar
支持-z,-j或者-J標誌,並且可能需要適當的命令(gzip
,bzip2
或者xz
)可用。對於 GNUtar
,可以通過例如指定進一步的壓縮程序extra_flags = "-I lz4"
。某些版本的bsdtar
接受選項,例如--lz4,--lzop和--lrzip或外部壓縮機通過 --use-compress-program lz4:這些可以在extra_flags
.
NetBSD 8.0 之前使用標誌--xz而不是-J,所以應該使用這個通過 extra_flags = "--xz"
而不是compression = "xz"
。 OpenBSD 和 Heirloom Toolchest 中的命令未記錄為支持xz
.
商業Unixen(例如AIX 和Solaris)中的tar
程序不支持壓縮。
注意
對於 macOS 用戶。 Apple 的文件係統有一個可追溯到經典 Mac OS 的“資源分叉”概念,如今很少使用。蘋果的版本tar
將它們作為單獨的文件存儲在 tarball 中,名稱前綴為“._’,並將這些文件解壓到資源分支中(如果可能的話):其他解壓方式(包括untar
在R)將它們解壓為單獨的文件。
當爭論時tar
設置為命令tar
在 macOS 上,環境變量COPYFILE_DISABLE=1已設置,對於係統版本tar
防止這些單獨的文件包含在 tarball 中。
也可以看看
https://en.wikipedia.org/wiki/Tar_(file_format), https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13_06 for the way the POSIX utility pax handles tar formats.
https://github.com/libarchive/libarchive/wiki/FormatTar.
untar
。
相關用法
- R toLatex 將 R 對象轉換為 BibTeX 或 LaTeX
- R type.convert 將數據轉換為適當的類型
- R txtProgressBar 文本進度條
- R select.list 從列表中選擇項目
- R COMPILE 編譯用於 R 的文件
- R readRegistry 讀取 Windows 注冊表配置單元
- R browseVignettes 在 HTML 瀏覽器中列出暈影
- R hasName 檢查姓名
- R nsl 按主機名查找 IP 地址
- R edit 調用文本編輯器
- R create.post 準備電子郵件和帖子的輔助函數
- R hsearch-utils 幫助搜索實用程序
- R download.packages 從類似 CRAN 的存儲庫下載軟件包
- R DLL.version MS Windows 上的 DLL 版本信息
- R ls.str 列表對象及其結構
- R Rscript R 前端腳本
- R bug.report 發送錯誤報告
- R PkgUtils 用於構建和檢查附加包的實用程序
- R cite 引用參考書目條目
- R SweaveSyntConv 轉換 Sweave 語法
- R RSiteSearch 搜索文檔中的關鍵詞或短語
- R glob2rx 將通配符或通配符模式更改為正則表達式
- R getFromNamespace 用於開發命名空間的實用函數
- R demo R 函數演示
- R mirrorAdmin 管理存儲庫鏡像
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Create a Tar Archive。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。