当前位置: 首页 > news >正文

购物网站功能模块图使用div建设的网站

购物网站功能模块图,使用div建设的网站,wordpress 添加媒体库,网站建设有没有做的必要性【Linux】jar文件软链接和硬链接的操作区别【一】软硬链接对比【二】创建与使用指南【1】创建操作【2】使用场景对比【三】复制操作注意事项【1】复制行为对比(1)默认行为 (cp source.jar dest.jar)(2)常用选项及影响(…

【Linux】jar文件软链接和硬链接的操作区别

  • 【一】软硬链接对比
  • 【二】创建与使用指南
    • 【1】创建操作
    • 【2】使用场景对比
  • 【三】复制操作注意事项
    • 【1】复制行为对比
      • (1)默认行为 (cp source.jar dest.jar)
      • (2)常用选项及影响
      • (3)推荐做法:​​
    • 【2】最佳实践
  • 【四】压缩操作注意事项
    • 【1】压缩工具行为差异
    • 【2】压缩案例
      • (1)​jar命令 (或 ZIP 工具):​​
      • (2)​tar命令:​​
      • (3)推荐做法与注意事项:​​
  • 【五】重要注意事项总结

【一】软硬链接对比

在这里插入图片描述

总结:​​ 软链接是指向文件名的指针,易受目标移动或删除的影响;硬链接是指向文件数据的直接入口,更稳定但受限于单一文件系统。

【二】创建与使用指南

【1】创建操作

# 创建软链接(推荐用于版本管理)
ln -s hive-connector-3.1.2.jar hive-connector.jar# 创建硬链接(适合空间敏感场景)
ln datax-core-1.0.jar datax-backup.jar

【2】使用场景对比

(1)软链接最佳场景​​:
1-版本切换:app.jar -> app-2.3.0.jar
2-开发环境:dev-config.jar -> config-local.jar
3-依赖管理:lib/mysql.jar -> …/jars/mysql-connector-8.0.jar

(2)硬链接最佳场景​​:
1-备份重要jar:critical.jar和critical_backup.jar
2-节省空间的日志轮转
3-容器内共享基础库

【三】复制操作注意事项

【1】复制行为对比

在这里插入图片描述

(1)默认行为 (cp source.jar dest.jar)

​(1)软链接:​​ 会被复制为新的软链接。新链接指向相同的原始目标路径。如果目标路径是相对路径,其解析基于新链接的位置,这可能不是你想要的(尤其是在目录结构改变时)。

(2)​硬链接:​​ 会被复制为独立的新文件。复制后,dest.jar内的硬链接文件与 source.jar内的原始文件以及原始文件指向的数据不再有任何关联。它们成为两份独立的数据副本。

(3)​结果:​​ JAR 包结构被复制,但链接的语义可能改变(软链接目标解析问题)或完全丢失(硬链接变成独立文件)。

(2)常用选项及影响

(1)​-a/ --archive(或 -dR --preserve=all):​​
这是复制目录树(包括 JAR 这样的压缩包文件)时最常用的选项,旨在保留所有属性(权限、时间戳、所有者、组)和结构。
​软链接:​​ 被保留为链接。目标路径保持不变。
​硬链接:​​ 被保留为硬链接。如果 source.jar内的两个文件是硬链接关系,复制到 dest.jar后,它们仍然是硬链接关系​(共享同一个 inode,在 JAR 内部)。cp会检测并维护源目录树中的硬链接关系。

​命令:​​ cp -a source.jar dest.jar或 cp -dR --preserve=all source.jar dest.jar

(2)-L/ --dereference:​​
总是跟随软链接。复制的是链接指向的实际文件内容,而不是链接本身。
​软链接:​​ 被替换为它指向的实际文件或目录的副本。链接本身消失。
​硬链接:​​ 行为与默认或 -a类似,通常会被保留为硬链接(除非与 -H组合有特殊情况)。
​命令:​​ cp -L source.jar dest.jar

(3)​-H:​​
仅在命令行参数是符号链接时,才解引用(复制目标内容)。对在遍历目录树过程中遇到的符号链接无效。在复制单个 JAR 文件时,如果 source.jar本身是一个软链接,-H会让 cp复制它指向的实际 JAR 文件。对 JAR 包内部的链接无效。通常不单独用于处理 JAR 内容内部的链接。

(3)推荐做法:​​

(1)​保留链接结构:​​ 使用 cp -a source.jar dest.jar。这是最安全、最符合预期的复制方式,能保持 JAR 包内部结构不变。
​(2)解引用所有软链接:​​ 使用 cp -L source.jar dest.jar。这会将所有软链接替换为它们指向的实际内容。​注意:​​ 这可能导致:
文件重复:如果多个软链接指向同一个大文件,该文件会被复制多份。
循环链接:如果存在循环软链接,cp可能会失败或产生巨大文件。
目标不存在:如果链接悬空,复制会报错。

【2】最佳实践

# 保持软链接结构的复制
rsync -av --copy-links /app/libs/ /backup/libs/# 完整复制实际内容
cp -RL /deployment/jars /backup/jars_content

【四】压缩操作注意事项

【1】压缩工具行为差异

在这里插入图片描述

【2】压缩案例

Spring Boot 应用通常使用 jar命令(基于 ZIP 格式)或 Maven/Gradle 插件(底层也使用 ZIP)打包。tar也是常见的归档工具。

(1)​jar命令 (或 ZIP 工具):​​

(1)​默认行为:​​
​软链接:​​ 会被存储为特殊的 ZIP 条目,标记为符号链接,并记录目标路径。解压时,如果支持(如 Unix 系统),会重建软链接。在 Windows 上解压,如果没有额外支持,可能会创建包含目标路径的文本文件。
​硬链接:​​ ​不会被特殊处理。每个硬链接条目都被视为独立的文件进行压缩和存储。解压后,所有硬链接都变成独立的文件副本。​硬链接关系完全丢失!​​
(2)​注意事项:​​
ZIP/JAR 格式本身不原生支持存储硬链接关系。
使用标准 jar或 zip命令打包包含硬链接的目录,会导致最终 JAR 包内存在多份相同数据的副本,显著增大 JAR 包体积。
解压后,软链接能否正确重建取决于解压环境和工具。

(2)​tar命令:​​

(1)​默认行为:​​
​软链接:​​ 默认被存储为链接条目(类型 '2’Symlink),包含目标路径名。tar很好地支持软链接。
​硬链接:​​ 默认被存储为链接条目(类型 '1’Hardlink),包含指向的目标文件名(在归档内)。tar支持存储硬链接关系。

(2)​关键选项:​​
​-h/ --dereference:​​
跟随软链接。归档的是链接指向的实际文件内容,而不是链接本身。
​硬链接:​​ 此选项不影响硬链接的处理。硬链接关系通常仍会被保留(除非使用 --hard-dereference,但很少用)。

创建包含链接的 tar:​​ tar -cvf app.tar /path/to/your/app(保留软硬链接)
​创建解引用软链接的 tar:​​ tar -chvf app.tar /path/to/your/app

(3)​后续压缩:​​ 通常会将 tar 包压缩成 .tar.gz或 .tar.xz:tar -czvf app.tar.gz /path/to/your/app(保留链接) 或 tar -chzvf app.tar.gz /path/to/your/app(解引用软链接)。

(3)推荐做法与注意事项:​​

(1)​Spring Boot JAR (ZIP):​​
​软链接:​​ 通常可以安全打包。确保目标路径在运行时环境有意义(相对路径基于 JAR 内位置或容器内绝对路径)。
​硬链接:​​ ​强烈避免!​​ ZIP/JAR 格式不支持,会导致数据重复和体积膨胀。如果目录中存在硬链接,应在打包前将其移除或替换为软链接或副本。使用 find . -type f -links +1查找硬链接。

(2)​使用 tar归档:​​
如果需要保留硬链接关系(例如创建备份或迁移),使用 tar(如 tar -cvf …) 是更好的选择,因为它能正确保存硬链接信息。之后可以压缩这个 tar 包。
使用 -h选项可以控制是否解引用软链接。

【五】重要注意事项总结

(1)​硬链接在 ZIP/JAR 中是敌人:​​ Spring Boot JAR 本质是 ZIP。硬链接在 ZIP 中会变成独立副本,浪费空间。​在构建 Spring Boot JAR 前,确保项目目录中没有硬链接。​​
(2)​软链接路径:​​ JAR 内的软链接使用相对路径最安全(相对于链接在 JAR 中的位置)。绝对路径在容器化或不同部署环境中容易失效。
(3)​解压环境:​​ 打包时保留的软链接,其能否在解压后正确工作(尤其是在 Windows 上)取决于解压工具。
(4)​循环链接:​​ 打包或复制时,避免目录树中存在循环软链接,这可能导致命令失败或产生无效结果。
(5)​cp -a是复制的好朋友:​​ 复制整个 JAR 文件时,cp -a能最大程度保留原始状态(包括链接)。
(6)​tar对链接更友好:​​ 如果需要归档包含硬链接的目录结构,优先使用 tar。
(7)​明确意图:​​ 在编写脚本时,清楚自己是想保留链接结构还是解引用链接。选择合适的命令选项。
(8)​测试:​​ 在关键操作(如构建部署包、复制生产 JAR)后,检查 JAR 包内容(jar tvf your.jar或 unzip -l your.jar)或解压测试,确认链接是否按预期处理。

​处理建议:​​
(1)​构建 Spring Boot JAR:​​ 确保项目目录本身不包含硬链接。软链接需谨慎使用(相对路径优先)。构建插件(Maven spring-boot-maven-plugin/ Gradle bootJar)会按 ZIP 标准处理软链接。
(2)​复制 Spring Boot JAR:​​ 使用 cp -a source.jar dest.jar。
(3)​归档包含链接的目录:​​
需要保留硬链接 -> 用 tar -cvf(然后可压缩)。
不需要保留硬链接 / 准备打包成 JAR -> 确保无硬链接,或用 cp -L/ tar -chvf解引用软链接后再打包。
只需处理软链接 -> 根据是否需要链接本身选择 tar -cvf或 tar -chvf。

http://www.dtcms.com/a/399871.html

相关文章:

  • Python爬虫实战:获取上海石油天然气交易中心2025年液化天然气交易数据并做分析
  • springboot项目添加请求url及请求入参日志
  • Spring XML 配置简介
  • 阿里云虚拟主机如何上传网站国外flash网站
  • NXP - 安装后的MCUXpresso IDE里面有所有的支持包,不用另外去下载
  • 公司网站域名更改怎么做做美团旅游网站多少钱
  • 网站建设初稿wordpress 教學
  • 【nvm for windows安装问题】手动安装方案
  • 网站定制开发怎么写网站后台管理系统图片
  • 如何本地搭建网站贵阳市门户网站
  • 网站设计理念怎么写wordpress插件清理
  • 语义精炼技巧生成对抗网络(3)基于Wasserstein GAN 的特征生成
  • 3.算法——遗传算法
  • html怎么做网站版块网站空间购买官方
  • 成都建站网站软件开发涵盖网站开发吗
  • DDOS高防的优点是什么
  • 电子电气架构 --- 引导式诊断
  • 视觉大模型:Qwen-VL 技术报告解读
  • 给公司建立网站不可以做到的是素材下载网站开发文档
  • wordpress网站类型长春网页设计培训
  • 半精度浮点在AI推理中的应用:C++23新类型与性能测试
  • p-SCN-Bn-NOTA,1206475-68-4是一种双功能螯合剂用于金属离子螯合
  • 62.[前端开发-Vue3]Day04-jsconfig-Vue版本-组件间通信-插槽
  • 珠海建设集团网站首页扬州网络科技有限公司网站建设
  • 微网站开发 mui框架大城 网站
  • 使用aspx做电影网站东莞做个网站
  • 彩投网站建设做网站抄代码
  • 高级IO——多路转接方案epoll原理及简单应用
  • 【IQA技术专题】 基于退化图像一致性的保真度IQA:CDI
  • JDK17的GC调优策略