0

我正在编写一个 bash 脚本,它应该从指定目录创建一个 .tar.gz 存档,包括文件结构。这是一个家庭作业,我需要它在学校使用的 Solaris 系统上工作。这意味着我不能像这样使用 tar

tar xvzf archive.tar.gz ./

因为这个系统使用一些旧版本的 tar 没有 -z 选项。我这样用

tar xvf - ./ | gzip > archive.tar.gz

它工作正常,除了一个奇怪的事实,当我检查档案的内容时,它包含自己(换句话说,它包含“archive.tar.gz”)。我怎样才能防止这种情况?

4

2 回答 2

1

这有效:tar cvf - | gzip > 归档.tar.gz

于 2014-06-23T14:23:11.380 回答
0

问题是,当您运行命令时,会立即创建名为“archive.tar.gz”的文件。意思是,在调用 gzip 之前。它只是一个空白文件,但它在目录中。为防止将其包含到生成的存档中,您可以尝试通过以下方式之一修改您的脚本:

  1. tar xvf - ./ | gzip > ../archive.tar.gz
  2. tar xvf - {path_to_dir_you_want_to_compress_files_from} | gzip > archive.tar.gz

遗憾的是,我无法检查这两个脚本是否有效,因为我在任何地方都没有 Solaris。请让我知道这是否有效。

于 2013-04-16T19:35:59.957 回答