tar 内有很多“._”文件

tar 内有很多“._”文件

我有一个在 Linux 机器上生成的 tar。我需要将该 tar 的一部分上传到另一台 Linux 机器上。完整的 tar 文件很大,需要几个小时才能上传。我现在在 Mac OSX 机器上,这是我的问题:

  1. 我将 tar 解压到一个文件夹并找到需要上传到新服务器的内容
  2. 我创建了一个较小的 tar,其中仅包含我要上传的内容。
  3. 我将其上传并解压到新的 Linux 机器上
  4. 当我查看服务器时,它充满了._文件。对于上传的每个文件,都有一个._文件,例如text1.txt, ._text1.txt, text2.txt, ._text2.txt...

OSX 将这些文件包含在 tar 中。

我尝试过这样做

tar --exclude='._*' -cvf newTar  . 

无差异。

我现在无法通过 ssh 访问新服务器。

我能做什么来解决这个问题?如何生成干净的 tar.gz 文件?

答案1

._ 文件是 OS Xbsdtar处理 OS X 特定的扩展属性和资源分支的方式。 (这是一种称为 AppleDouble 的机制,实际上它不仅仅适用于 TAR 存档,还可以在多种存储格式中找到,而这些格式中没有用于保存 MacOS 资源分支和 Finder 信息的本机机制。)

为了防止它们被添加到 tar 文件中,您可以将其COPYFILE_DISABLE=1作为环境变量传递给 tar。

COPYFILE_DISABLE=1 tar cf newTar.tar /your/files

答案2

据我了解,tar --exclude='._*' -cvf newTar .应该有效:Finder 创建._*文件但newTar不应包含它们。

但是您可以通过在直通模式下调用 tar 来完全绕过这些文件。例如,要仅复制oldTar下的文件some/path,请使用

tar -cf newTar --include='some/path/*' @oldTar

答案3

那些以“._*”开头的文件是苹果特定位置指示符文件,根据这个帖子显然,在登录到 OSX 终端时,您无法摆脱它们,再次根据同一页面。您需要将文件上传到非苹果操作系统,删除这些文件并再次打包它们。这似乎是唯一的解决方案。

相关内容