archive/ssh/tar 命令创建的文件行为不一致

archive/ssh/tar 命令创建的文件行为不一致

在编写部署脚本时,我遇到了一些无法解释的问题。我们有一个生产服务器(Ubuntu 服务器 10.04)、一个存储库(Gitlab)和一个开发服务器(Ubuntu 14.04)。我在开发服务器上工作,然后从那里运行部署脚本,在删除其他所有内容后,该脚本仅执行以下操作:

git archive --format=tgz $MASTER | ssh $HOST "mkdir $NEW && tar xzf - -C $NEW || echo 无法创建文件夹"

文件夹创建正确。文件似乎正确。但 Apache 会抛出各种错误,通常与未声明的类或变量有关,但每次尝试时都不同。将新文件夹移开并将旧文件夹移回原位可以正常工作。将旧文件夹移开并将新文件夹移回原位会中断。两个文件夹之间没有明显的区别。

然后事情变得有趣起来: - 如果我使用新文件夹,它就会崩溃。如果我将旧文件夹中的各个子文件夹移动到新文件夹中,它最终会正常工作。但是,没有一个文件夹是足够的,并且哪些文件夹有帮助并不一致。它似乎是某种“临界质量” - 当有足够多的旧文件时,它就会正常工作。运行 ls -la 显示具有相同大小/所有权/权限的相同文件。运行 diff -r 显示文件夹/文件之间没有差异。 - 如果我使用旧文件夹,它会正常工作。如果我将一些子文件夹/文件从新文件夹移动到旧文件夹中,它最终会崩溃。行为类似于上一点。 - 如果我将新旧文件夹都移开,并使用 cp -a 制作文件夹的精确副本,它会正常工作。(编辑:并非总是如此。我刚刚做了一个测试,原始失败,副本失败不同,副本的副本成功。)

因此,这些文件是相同的,但不知何故它们有问题。我也见过使用 vi 保存文件时行为发生变化的情况,即似乎“清理”了文件。我不明白这些文件可能出了什么问题,但肉眼看不到 - 而且根据 Apache/PHP 以外的所有软件,这些文件都完全正常。

只有 Apache 才能拾取的文件可能存在什么问题?哪些命令可以揭示这些问题?

相关内容