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
这次成功了。