cp命令引发的一次部署失败

我正在参与掘金创作者训练营第5期,点击了解活动详情,一起学习吧!

场景这样的:

  1. 本地触发构建 →
  2. 得到部署包 →
  3. 自动化部署脚本执行 包部署→
  4. 脚本 health check 界面 返回 ok →
  5. 部署完成

然而,打开界面,界面加载国际化失败 ,版本不可用

立刻,回滚到上一个版本,开启版本问题check过程。

check 过程

  • 首先,在本地启动构建版本,模拟线上环境

  • 其次,启动完成,浏览访问日志,注意到一条 en_us.json 404

  • 再次,比对构建后的版本与产线环境正常版本路径,发现l18n 路径多了一层。

  • 最后,check 构建脚本,发现问题所在:

cp -R "${source}/" "${target}/"

本地试验

image.png

相关文档解释

linux help 给出的解释如下:

image.png

image.png

其他参考 :

默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项

实践发现target dir 是否存在,对copy结果存在影响

image.png

上述操作理解:

如果target 文件夹不存在,相当于把source dir重命名了;如果target文件夹存在,直接copy,作为子文件夹。

更多参数配置

参数说明

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。需要注意目标文件夹是否存在
  • -l:不复制文件,只是生成链接文件。

注意事项

cp命令 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。

  • 它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。如果目标文件已经存在,那么,该目标文件的内容将被破坏。
  • 还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误
  • 命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式

更多推荐

webpack bundle 优化

猜你喜欢

转载自juejin.im/post/7124549579491508238