跳转至

Tar命令 如何将软连接对应的文件打包?


2023-11-23 by dongnan

环境描述

OS: Ubuntu Server 18.04 LTS

项目中的 dist 子目录是个软连接文件,对应 unpackage/dist/build/h5/ 子目录。

Linux 系统中 以l开头的文件表示软连接文件。

ll dist

lrwxrwxrwx 1 root root 23 Nov 23 13:50 dist -> unpackage/dist/build/h5/

问题描述

需要对 dist 子目录进行打包。

tar czfP dist.tar.gz --exclude=docker --exclude=.git -C /path/myproject/ dist

tar 命令的参数,请参考这里

接下来检查下压缩包内的文件。

less dist.tar.gz  | tail

lrwxrwxrwx root/root         0 2023-11-23 13:50 dist -> unpackage/dist/build/h5

压缩包内仅仅是个软连接文件,没有把目标软连接对应的文件夹h5打入压缩包中。

那么 tar 命令有什么参数,可以把软链接所指向的 真实文件打到包中呢?

解决方法

通过查找 man 帮助, 发现还真有一个关于软连接的参数:

-h, --dereference
      Follow symlinks; archive and dump the files they point to.

重新打包,这次加了 -h 参数

tar czhfP dist.tar.gz --exclude=docker --exclude=.git -C /path/myproject/ dist

再次检查下压缩包内的文件

less dist.tar.gz  | tail
-rw-r--r-- root/root      1654 2023-11-23 13:54 dist/static/image/find_img_buliangpin.png
-rw-r--r-- root/root      1889 2023-11-23 13:54 dist/static/image/chaxun.png
...... 省略
-rw-r--r-- root/root      1705 2023-11-23 13:54 dist/static/image/pandian.png
-rw-r--r-- root/root      1017 2023-11-23 13:54 dist/index.html

这次成功了。

参考文档

GNU tar: an archiver tool

回到页面顶部