建立两个文件夹,test test1如下,然后将 test 下压缩后,解压到 test1
tiny : ~/test # ll
total 4
lrwxrwxrwx 1 root root 4 Nov 4 02:57 dir -> dir1
drwxr-xr-x 2 root root 4096 Nov 4 02:57 dir1
tiny : ~/test1 # ll
total 8
drwxr-xr-x 2 root root 4096 Nov 4 02:58 dir
drwxr-xr-x 2 root root 4096 Nov 4 02:58 dir1
tiny : ~/test # tar xvf test.tar.gz -C ../test1/
dir
tar: can't remove old file dir: Is a directory
说明 软链接 是无法覆盖 同名目录的,会导致解压失败。
busybox tar 命令的选项 默认不会根据符号链接优先的原则,需要手动加 参数 -h ,单独的tar 命令已经默认支持 -h的功能,不用自己再加这个参数了
--recursive-unlink ( empty hierarchies prior to extracting directory)在提取目录之前清空层次结构
所以解决方法有两种
1、删除要覆盖的目标文件夹内的内容
2、tar xfh xxx.tar.gz -C /xxx 加上 -h 参数
3 --recursive-unlink