【问题标题】:Tar command in mac os x adding "hidden" files, why? [closed]mac os x中的tar命令添加“隐藏”文件,为什么? [关闭]
【发布时间】:2012-01-07 02:05:41
【问题描述】:

我正在编写自己的 tar 归档器。在我的应用程序中一切正常(即使读取使用其他工具生成的 tars)但是我无法让我的 tar 文件与 3rd 方 tar 文件阅读器一起使用。所以我尝试在命令行上构建一个 tar 文件,用我的代码构建一个,然后将两者进行二进制比较。

但是好像有问题:

我有一个名为 Test.txt 的文本文件,我想将它添加到我的 tar 中,因此我在终端中运行以下命令:

tar -c -f x.tar Test.txt

当这样做时:

tar -tf x.tar

我得到以下列表:

./._Test.txt
Test.txt

这是在 Mac OS X Lion 的终端中。

./._Test.txt 文件来自哪里?我在执行 ls -a 时看不到它

在检查 tar 内容时,它似乎是一些二进制数据,但我不知道它来自哪里。

【问题讨论】:

    标签: macos terminal osx-lion tar


    【解决方案1】:

    您可以将以下内容添加到您的 bashrc 文件中 -

    export COPYFILE_DISABLE=true
    

    或者,您可以在提取时将此选项添加到您的 tar 命令中

    tar -xzpvf x.tar --exclude="._*"
    

    【讨论】:

    • exclude参数在这里不起作用,使用export命令可以。
    • --exclude 为我工作(在不知何故进入即使在 OS X 上解压使用._-files 污染所有内容的情况之后)。
    • 在很多情况下过于贪婪。我们要定位 COPYFILES 而不是 ALL HIDDEN FILES
    【解决方案2】:

    从 bsdtar 3.0.3 - libarchive 3.0.3(可能更早)开始,bsdtar 命令有一个新的(特定于 Mac OS X)选项,称为 --disable-copyfile,用于禁止创建 ._ 文件。

    【讨论】:

    • 对于bsdtar 2.8.3 - libarchive 2.8.310.7.5--disable-copyfile 没有记录但仍然可用。
    【解决方案3】:

    它是文件资源分支/扩展属性的表示。

    试试 ls -l@ Test.txtxattr -l Test.txt 看看 OSX 在文件中添加了哪些额外内容。

    【讨论】:

      【解决方案4】:

      当目标文件系统不支持时,这是 OSX 存储文件系统分叉的方式。

      见:http://en.wikipedia.org/wiki/Fork_(file_system)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-27
        • 2015-05-22
        • 2016-06-25
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 2015-02-14
        相关资源
        最近更新 更多