【问题标题】:tar files including directory without siblingstar 文件,包括没有兄弟姐妹的目录
【发布时间】:2015-03-22 06:25:38
【问题描述】:

我有以下文件结构

.
├── doc1.pdf
├── doc2.pdf
└── images
    ├── img1.jpg
    └── img2.jpg

我想 tar 图像目录保留父 images(没有完整路径)。还有什么我想跳过目录(doc1,doc2)中的其他文档目前我使用:

tar -cf /sth_dir/images.tar -C /images/ . --exclude="doc*"

但我不想使用--exclude,因为那里可能会添加具有不同名称的其他文件。

【问题讨论】:

  • 您的“-C 图像”已经完成了这项工作,您无需 --exclude 任何内容。鉴于,您提出了正确的问题;)

标签: linux bash tar


【解决方案1】:

这应该可行:

tar cf /sth_dir/images.tar images

当我包含-v 参数(tar cvf ...)时,tar 产生了这个输出:

a images
a images/img1.jpg
a images/img2.jpg

tar 文件内容如下所示:

images/
images/img1.jpg
images/img2.jpg

【讨论】:

  • 如果您提供完整路径,例如。 /home/jdoe/Desktop/test/images 然后它将被包含在 tar 中。我只想要图像目录。
  • 此 tar 命令仅对 tar 文件本身使用绝对路径。图像文件仍然是相对路径。
【解决方案2】:
tar cf /sth_dir/images.tar -C / images/images

假设您在另一个 images 目录中嵌入了一个 images 目录。

人焦油:

 -C, --directory DIR
       change to directory DIR

作为替代方案,您可以考虑cpio。假设您有使用 find 的经验,您可以非常具体地说明您想要归档的内容。例如,这对二人组使您可以归档目录,但不包含其内容,我发现这在许多用例中非常有用。

【讨论】:

  • 如果我不想将 dir 更改为 images parent 怎么办?有没有办法用绝对路径做到这一点?
  • 就是上面那个,因为PWD是/,tar文件的内容是images/images。
  • 也就是说你可以tar cf tarfile.tar -C / images/a images/b,包括imagesimages/aimages/b,不包括images/c
猜你喜欢
  • 2012-10-28
  • 2021-05-29
  • 1970-01-01
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多