How do I tar a directory without retaining the directory structure?
我正在编写备份脚本,希望整理一个文件目录:
1
| tar czf ~/backup.tgz /home/username/drupal/sites/default/files |
这会使其变大,但当我解开结果文件时,它包含完整的文件结构:文件在home/username/drupal/sites/default/files中。
是否有排除父目录的方法,以便生成的tar只知道最后一个目录(files)?
使用--directory选项:
1
| tar czf ~/backup.tgz --directory=/home/username/drupal/sites/default files |
- 如果我想在这里放两个目录怎么办?
- @用户3352668只需添加两个目录。例如,如果默认值包含"files"和"morefiles",只需在NBT字符串中添加"morefiles"。顺便说一句:最好的解决方案是NBT,应该是公认的答案。
- -C dir与--directory=dir相同,将目录更改为dir
- 我只是想说这里的订单很重要。您不能在目的地~/backup.tgz前使用--directory="/home/username/drupal/sites/default files"。
- @Chrisstryczynski指出,--directory选项给出的路径不是"/home/username/drupal/sites/default files"。它是/home/username/drupal/sites/default,后面跟一个位置参数,指定要加载的目录名,files。
- 我不能在文件中使用通配符。如何使用通配符使用目录?
嗨,我有一个更好的解决方案,当进入指定的目录是不可能的(makefiles等)
1
| tar -cjvf files.tar.bz2 -C directory/contents/to/be/compressed . |
不要忘记末尾的圆点(.)!!
- -C dir与--directory=dir相同,将目录更改为dir
- 结尾的圆点做什么?
- @brucesun the-c更改您的工作目录。点告诉tar要归档哪个目录(即当前工作目录)。
- 如果您在末尾省略了点,您可能会收到警告:tar:懦弱地拒绝创建空的归档文件
- 每个人都在谈论-c选项或--directory,但最后没有一点".",正如@maikold提到的,它不起作用——至少在我的环境中是这样。
1 2
| cd /home/username/drupal/sites/default/files
tar czf ~/backup.tgz * |
- 您还可以使用tar的-c选项。
- 不推荐使用CD,而且容易出错,例如大脚本或生成文件。下面的答案更通用、更正确。
- 在Ubuntu 16.04上,尝试过-C和--directory对我不起作用。这是唯一可行的选择。
从/home/myuser/workspace/zip_from/下载所有txt文件。对于没有源文件目录结构的/home/myuser/workspace/zip_to/,使用以下命令:
1
| tar -P -cvzf /home/myuser/workspace/zip_to/mydoc.tar.gz --directory="/home/myuser/workspace/zip_from/" *.txt |
这对我很有用:
1
| gzip -dc"<your_file>.tgz" | tar x -C <location> |
1
| tar -Cczf ~/backup.tgz /home/username/drupal/sites/default/files |
-C为您制作CD
- 这行不通。请参阅maikoid和neil butterworth的解决方案。
- -C工作,但必须像-C file1 file2 ...那样使用。