从根目录使用tar.gz打包文件


8

我尝试在根目录中将.csv文件与tar.gz打包在一起。

该文件myfile.csv位于,/mnt/sdb1/ 因此完整文件名为/mnt/sdb1/myfile.csv

我尝试将tar.gz保存在 /mnt/sdb1/old_files

我这样尝试过:

tar -czf /mnt/sdb1/old_files/new.tar.gz mnt/sdb1/myfile.csv

但是,当我提取文件时,将提取一个名为“ mnt”的文件夹,其中包含另一个名为“ sdb1”的文件夹,其中包含该文件。

是否可以仅压缩文件,而不复制所有目录?

Answers:


12

使用以下--directory选项man tar

-C,--目录DIR

转到目录DIR

即:

tar -C /mnt/sdb1/ -czf /mnt/sdb1/old_files/new.tar.gz myfile.csv

谢谢Fiximan!这样就解决了问题。我将有15个声誉,因此我会投票赞成。
2015年

3

您必须先进入cd /mnt/sdb1,然后启动tar命令。

仅供参考,您无需在tar这里使用,因为它的目的是在tarball中聚集多个文件。由于此处只有一个文件,因此请使用gzip


我知道,但是我必须从根目录开始,因为我从脚本执行命令。
黑色

1
是的,所以只需在cd之前添加命令tar,然后您就可以返回,或者cd /mnt/sdb1 && tar -czf new.tar.gz myfile.csv && cd /如果您更喜欢一行cmd ,则可以使用。
McSinyx

@McSinyx问题是即使我执行该目录也不会保存,cd /mnt/sdb1/因此下次执行命令时我将再次位于根目录中。但是,您尝试的第二种解决方案对我来说似乎合乎逻辑。
黑色

@McSinyx好!它有效:)谢谢,这将非常有用!
黑色

@EdwardBlack您可以在任何地方运行脚本,只需添加相关的绝对路径即可。通常,使用相对路径不是一个好主意,因为它很容易破坏事物。
dr_

1

使用该-C选项来压缩:

   -C Directory
        Causes the tar command to perform a chdir subroutine to the
        directory specified by the Directory variable.
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.