我是相当新的使用 tar 的人,过去曾使用过 zip 文件。
我只想创建不包含目录的 tar 文件。
我去了这里,但发现它有点混乱。
https://www.baeldung.com/linux/tar-archive-without-directory-structure
# Backup crontab
crontab -l > /home/andy/bin/crontab_backup.txt
tar -cvf /home/andy/bin/crontab_backup.tar /home/andy/bin/crontab_backup.txt
对于您的具体示例,如果您在命令中
cd
选择/home/andy/bin
并省略该路径,您将获得所需的结果:这是3.2 在您链接到的页面的目标目录中使用 tar 命令中的建议,并且可能是解决此特定问题的最简单方法。
相当于3.1。对单个目录使用 -C 选项将是:
链接页面中没有提到另一个选项:
--transform
,它允许我们使用s/<pattern>/<replacement>/
类似 in 的表达式sed
。使用 GNU
tar
,您可以使用选项在-C
命令中途更改目录。文件名仍然是相对于当前目录记录的,所以这意味着你可以这样做:如果你想从不同的目录收集两个文件,你可以这样做:
该
tar
命令确实没有不存储目录结构的选项,符合“做一件事,把它做好”的linux理念。您引用的页面提供了一些技巧来存储没有目录结构的文件。但是,这些技巧的作用非常有限,需要您指定包含文件的每个最低级别目录。如果树中间的目录中也有文件,这个技巧就已经失败了。对这些进行打包将包括较低的目录。
因此,不可能以完全自动化的方式进行。一种更自动化的方法需要首先准备一个目录,其中包含来自顶级目录的目录树中的所有文件,然后 tar 该目录。在支持 linux 权限的文件系统上,可以使用硬链接来完成,因此临时副本不需要额外的空间。
你可以这样做
find
:然后你可以 tar 中的目录
dir
。/path/to/new