使用tar命令解压时,如何完全覆盖现有目录结构并移除多余内容?
解决方案
tar本身没有直接解压后删除目标目录中额外文件的功能,不过可以通过以下两种方法实现你的需求:
方法一:删除原目录后解压并重命名
这是最直接的方式,步骤如下:
# 删除现有的project目录 rm -rf project # 解压project.tar包 tar -xf project.tar # 将解压出来的project-new重命名为project mv project-new project
执行后,新的project目录结构会完全和打包时的project-new一致,原有的c子目录会被彻底清除。
方法二:用rsync同步实现精准覆盖
如果不想删除整个project目录,可以结合rsync的同步功能,删除目录中不在压缩包内的文件:
# 创建临时目录用于存放解压内容 mkdir temp_project # 将tar包解压到临时目录 tar -xf project.tar -C temp_project # 同步临时目录中的project-new内容到project,--delete参数会删除project中不存在于源目录的文件 rsync -av --delete temp_project/project-new/ project/ # 清理临时目录 rm -rf temp_project
这种方式会保留project目录本身,但会删除其中不在project-new里的c子目录,同时同步更新a、b目录的内容。
内容的提问来源于stack exchange,提问作者cy10
相关产品推荐
相关产品推荐

