如何将一个目录打包到另一个目录?

如何将一个目录打包到另一个目录?

如何压缩文件夹 (tar1) 并将该压缩文件夹发送到不同的目录(假设称为 tar2)。

我检查了这里的问题,其中大多数都使用文件,而不是目录,我一直在尝试所有组合,但我无法让它正常工作。

在我的〜我有:

tar1/
  a.txt
  b.txt
tar2/

Tar1/ 中有一个名为 a.txt 和 b.txt 的测试文件。我想压缩该文件夹并将其放入 tar2/

所以之后它看起来像:

tar1/
 a.txt
 b.txt
tar2/
 tar1.gz
     a.txt
     b.txt

我正在尝试

tar czvf tar2/ tar1/

(我在一本参考书中给出了该语法的示例,其中第一个路径是您要存储它的位置,第二个路径是您要创建存档的位置。

我还尝试过以 -C 作为我的目的地:

tar cvzf tar1/ -C tar2/

希望 tar1/ 压缩目录并将其放入 tar2

我收到这个错误

tar:懦弱地拒绝创建空档案

尝试tar --help' ortar --usage' 以获取更多信息。

我使用的是 RHEL 6.7

答案1

您没有在声明中指定存档。它应该看起来像:

tar -cvf tar2/tar1.tar tar1/

这会将 tarball 放入tar1.tar目录中tar2/

前:

tree tar*
tar1
├── a.txt
└── b.txt
tar2
├── a.txt
└── b.txt

0 directories, 4 files

后:

tar -cvf tar2/tar1.tar tar1/
tar1/
tar1/a.txt
tar1/b.txt

tree tar*
tar1
├── a.txt
└── b.txt
tar2
├── a.txt
├── b.txt
└── tar1.tar

0 directories, 5 files

环境:

Distributor ID: Debian
Description:    Debian GNU/Linux 8.6 (jessie)
Release:    8.6
Codename:   jessie

答案2

你什么实际上正在尝试做埋在另一个答案的评论中tar显然不是先决条件,压缩也不是。

下面是如何使用 来做到这一点pax

要在以下位置创建压缩存档tar1/*(但不带tar1/前缀)tar2/tar1.tar.gz

( cd tar1/ && pax -z -w * > ../tar2/tar1.tar.gz )

将整个层次结构直接从 复制tar1/tar2/ 没有中间档案保存一切

( cd tar1/ && pax -pe -r -w * ../tar2/ )

*请注意,当然,shell 不会在其扩展中包含点文件。如果碰巧出现问题,请按照通常的方式处理。

相关内容