![db21fb421b055b7826b62df57f497cd6.png](https://img-blog.csdnimg.cn/img_convert/db21fb421b055b7826b62df57f497cd6.png)
概要:相信大家平常在Linux服务器上部署Jar包,使用的应该都是shell脚本!大致的过程应该是:更新代码,编译打包。在build路径下找到打包完成的Jar,执行 jar xxx.jar 即可(此步视具体情况添加相关启动参数,这里不再展开)。在这基础之上,我们有让部署流程更加完善的建议:在编译打包之前,不妨先对当前Jar进行一轮拷贝备份!
那么,拷贝备份的好处有哪些呢?
- 在一定程度上培养我们的灾备意识
- 保护编程成果(也就是打包成功的Jar)
- 一旦编译打包失败,但又急于使用Jar提供的服务时,能够快速部署启动
- 特别是持续交付阶段,我们不仅可以提供一个稳定版本的Jar供测试验收,而且可以放心的进行迭代式开发
![a43664a6922e3f4dc2214e6c3ea5c8e3.png](https://img-blog.csdnimg.cn/img_convert/a43664a6922e3f4dc2214e6c3ea5c8e3.png)
接下来,聊聊应该如何进行备份?
或者说怎么做才能保证有效地备份?
- 推荐做法:使用系统当前时间戳来命名Jar文件
- 命名规则中可选择性加上bak或者backup字样标识备份意图
最后,使用shell演示Jar文件的命名:
#!/bin/sh1 currentDateTime=`date +%Y%m%d%H%M%S`2 cp xxx.jar ./"xxx.jar.$currentDateTime.bak
脚本解读:先获取系统当前时间戳,赋值给变量currentDateTime,然后对xxx.jar进行拷贝重命名即可。以下两点特别说明:
- 反引号的作用:其中的内容作为命令执行,执行成功后会返回一个结果。第1句就是将date +%Y%m%d%H%M%S 的执行结果赋值给变量currentDateTime。有疑惑参见下图:
![0ba776006597854a0fa98ff444dec033.png](https://img-blog.csdnimg.cn/img_convert/0ba776006597854a0fa98ff444dec033.png)
获取系统当前时间戳
- 第2句就是拷贝Jar然后使用$currentDateTime进行混合命名
拷贝成功的文件名形如:xxx.jar.20190325230003.bak
![7c9efbd87b7bd44e139ad107872d9c1f.png](https://img-blog.csdnimg.cn/img_convert/7c9efbd87b7bd44e139ad107872d9c1f.png)
以上仅供参考!如有好的方案,欢迎评论交流!