如何在不保留目录结构的情况下压缩目录?


81

我正在使用备份脚本,并且想要压缩文件目录:

tar czf ~/backup.tgz /home/username/drupal/sites/default/files

这可以压缩它,但是当我解压生成的文件时,它包括完整的文件结构:这些文件位于中home/username/drupal/sites/default/files

有没有一种方法可以排除父目录,从而使生成的tar只知道最后一个目录(files)?

Answers:


37
cd /home/username/drupal/sites/default/files
tar czf ~/backup.tgz *

19
您也可以使用tar的-C选项。
GuruM 2013年

8
不建议使用cd,并且容易出错,例如大脚本或makefile。下面的答案更普遍地适用和正确。
格雷戈尔

尝试-C--directory没有为我在Ubuntu 16.04的工作。这是唯一可行的选择。
haxpor

这是唯一可行的选项-C添加一个。根文件夹,这不是我们想要的。
Nicolas Dorier

164

使用--directory选项:

 tar czf ~/backup.tgz --directory=/home/username/drupal/sites/default files 

1
如果我想在这里放置2个目录怎么办?
Shanpei Zhou 2015年

@ user3352668只需添加两个目录。例如,如果默认包含“文件”和“更多文件”,则只需将“更多文件”添加到nbt字符串中。顺便说一句:最好的解决方案是nbt的,应该是公认的答案
匿名

4
-C DIR--directory = DIR相同,将目录更改为DIR
Markus

1
我以为我要提到这里的顺序很重要。您无法--directory="/home/username/drupal/sites/default files"到达目的地的前方~/backup.tgz
克里斯·斯特里钦斯基

6
@ChrisStryczynski注意,该--directory选项给出的路径不是"/home/username/drupal/sites/default files"。它是/home/username/drupal/sites/default,后跟一个位置参数,用于指定要压缩的目录的名称files

48

嗨,当在指定目录中输入不可能(Makefiles等)时,我有一个更好的解决方案

tar -cjvf files.tar.bz2 -C directory/contents/to/be/compressed .

不要忘了最后的点(。)!


4
最后的点是做什么的?
布鲁斯·孙

3
@BruceSun -C更改您的工作目录。该点告诉tar您要存档的目录(即当前工作目录)。
user12345

2
如果在末尾省略点,则可能会收到警告:tar:
怯ward地

3
每个人都在谈论-C选项或--directory,但没有一点“。”。最后,就像@MaikolD提到的那样,它不起作用-至少在我的环境中。
aks

5
仍然会.在tar的根目录中留下一个文件夹
electrovir

2

要将所有txt(* .txt)文件从头压缩/home/myuser/workspace/zip_from//home/myuser/workspace/zip_to/不包含源文件目录结构的文件,请使用以下命令:

tar -P -cvzf /home/myuser/workspace/zip_to/mydoc.tar.gz  --directory="/home/myuser/workspace/zip_from/" *.txt

0

这为我工作:

gzip -dc "<your_file>.tgz" | tar x -C <location>


0

创建一个tar档案

tar czf  $sourcedir/$backup_dir.tar --directory=$sourcedir WEB-INF en

在本地计算机上解压缩文件

tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

上载到服务器

scp -r -i $privatekey $sourcedir/$backup_dir.tar $server:$deploydir/med365/
echo "File uploaded.. deployment folders"

在服务器上解压缩

ssh -i $privatekey $server tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

-2
tar -Cczf ~/backup.tgz /home/username/drupal/sites/default/files

-C为您做CD


这是行不通的。请参阅MaikoID和Neil Butterworth的解决方案。
文森特

3
-C可以,但是必须像-C <dir> file1 file2 ...
vyom
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.