不创建新目录,仅将tar中的新文件合并到现有目录结构中解压tar文件

3

情况:

假设有一个结构如下的tar文件:

  • DIR A
    • FILE 1
  • DIR B
    • FILE 2
  • DIR C
    • FILE 3

而在我的磁盘上有一个目录结构如下:

  • DIR A
    • FILE 1
    • ... (更多文件和文件夹)
  • DIR B
    • ... (文件和文件夹,但不包括FILE 2)

问题:

有没有办法让解压命令不创建新目录(即不在解压位置创建不存在的目录),并且已经存在的文件不会被替换?

解压后,磁盘结构应该是这样的:

  • DIR A
    • FILE 1 (未被tar替换)
    • ... (更多文件和文件夹)
  • DIR B
    • FILE 2 (来自tar,因为以前不存在)
    • ... (更多文件和文件夹,但不包括FILE 3)

(请注意,不应创建DIR C)

更新

我已经发现'--skip-old-files'可以实现在解压时不替换旧文件。

1个回答

3
for d in $(ls -d /home/bob/*/); do tar -x -k -f /tmp/test.tar  ${d}/* ; done

在你的目标位置中,$(ls -d /home/bob/*/) 列出只有目录,-k 保留已存在的文件。


这个解决方案对我有用,我只需要添加-P选项来保留绝对路径。谢谢! - NiMeDia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接