如何在其他目录中创建tar存档?


38

我想在其他目录而不是当前目录中创建tar归档文件。

我尝试了以下命令:

tar czf file.tar.gz file1 -C /var/www/

但会在当前目录中创建档案。为什么?


3
您似乎已经误解了-C(的含义模糊不清,这并不奇怪)。有关详细信息,请参阅serverfault.com/q/416002/86283
NN

Answers:


47

最简单的方法,如果你不特别需要-C告诉tar改变到其他目录,是简单地指定要在命令行中归档的完整路径。然后,您可以位于您喜欢的任何目录中,以在存档中创建所需的目录结构。

以下将创建存档/var/www/file.tar.gz,并将其file1从当前目录(碰巧出现在其中)放入其中,而没有归档路径信息。

tar czf /var/www/file.tar.gz file1

(到归档文件,组成文件或两者的路径)当然也可以是相对的。如果file1位于中/tmp,则您/var/spool要在中创建归档文件/var/www,则可以使用类似以下内容的文件:

tar czf ../www/file1.tar.gz /tmp/file1

这个主题有上百万种变化,但这应该可以帮助您入门。v如果要查看tar实际操作,请添加标志。


1
您也可以使用相对路径。
NN

@NN绝对可以,但是由于我们不知道$PWD它是什么,因此在示例中使用绝对路径似乎最安全。
CVn

的确,尽管我将它包括在内以表明它是解决问题的一种可用选择,但还是有意义的。
NN

这样,file1tar存档中的路径将为/tmp。这可能与您期望的不一样。
mouviciel 2013年

8

我将压缩后的数据转换为流(-),然后轻松重命名和定位(>)到任意选择的位置(而且我总是将相对路径(./)压缩,因此在解压缩时更容易处理)

tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar

这对单个文件没有帮助,而且-C更加惯用(更短)。
马哈茂德·古德西

3

我认为应该是:
tar czf file.tar.gz -C /var/www/ file1

哪个对我有用。它告诉您更改目录,然后选择文件。


-2

工作完美

cd /home; tar -czvf - /var/log/* > varlog.tar.gz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.