tar gz 将另一个位置的目录复制到目标目录

tar gz 将另一个位置的目录复制到目标目录

我有以下目录结构:

/home/
  |__dirA/
      |__ dir_to_zip/
          |__ file1.txt
          |__ file2.txt
          |__ ...
  |__dirB/
      |__ dir_to_save_in/
  |__dirC/
      backup_zip_script.sh

backup_zip_script.sh包含(除其他外)命令(src):

tar -czvf /home/dirB/dir_to_save_in/backup.tar.gz /home/dirA/dir_to_zip

也就是说:我希望压缩目录~/dirA/dir_to_zip,将压缩的存档保存在 中~/dirB/dir_to_save_in/,并使用位于 中的脚本来执行此操作~/dirC/

上面的命令tar可以工作,但是解压缩保存的存档会产生完整的目录结构:

/home/
  |__dirA/
      |__ dir_to_zip/
          |__ file1.txt
          |__ file2.txt
          |__ ...

当我只想:

dir_to_zip/
  |__ file1.txt
  |__ file2.txt
  |__ ...

如何将目录压缩到另一个位置(这样我就必须指定完整的绝对路径),但只压缩该目录而不压缩它之前的所有级别?

我也可以简单地使用cd /home/dirA/ && tar......但我更愿意看看是否还存在其他解决方案。

答案1

正如在评论,如果您的实现支持,请使用-C“更改到目标目录”选项:tar

tar -czvf /home/dirB/dir_to_save_in/backup.tar.gz -C /home/dirA dir_to_zip

提取存档时也可以使用此选项,例如

tar -xzvf /home/dirB/dir_to_save_in/backup.tar.gz -C /home/dirA

将存档的内容提取到/home/dirA.

答案2

如果您的目录结构是一致的或者您以编程方式执行此操作,则可以使用选项--strip-components=<#>where<#>是在提取之前要删除的文件名路径的元素数量。

相关内容