如何通过 ssh 和 shell 覆盖现有文件来更新内容管理安装?

如何通过 ssh 和 shell 覆盖现有文件来更新内容管理安装?

我已经在运行 CentOS 5 和 Apache 2.2 的网络服务器上安装了 cms (modx)。现在有新版本了,我想更新一下。中的说明modx维基建议覆盖现有文件。

我已经下载了 .zip 文件并将其解压。现有安装位于html/cms/.新文件位于html/modx-2.1.1-pl/.我通过 ssh 连接访问服务器。

如何移动新文件,html/cms/同时覆盖现有文件并保留不属于安装文件的文件?我已经尝试过mv- 命令并阅读了它rsynccp可能合适。

当我尝试时mv -ivt cms/ modx-2.1.1-pl/*没有成功。的子目录modx-2.1.1-pl/尚未移动。

怎样做才正确呢?

答案1

首先,备份现有文件,以防万一。

tar czf modx-old.tar.gz html/cms

然后使用cp将新文件复制到位。您不能mv在此处使用,因为它只会跳过现有目录,而不是递归到它们。但cp会进行深层复制,覆盖目标中的任何现有文件。

cd html/modx-2.1.1-pl/ && cp -Rpf . ../html/cms/

使用 GNU cp,您可以添加-l来创建硬链接而不是复制。

最后你可以删除该modx-2.1.1-pl目录。

答案2

您只是参数的顺序错误。该命令的用法mvmv source dest。如果您想将 modx-2.1.1-pl 下的所有内容移动到 cms,您应该这样做mv modx-2.1.1-pl/* cms/。实际上,使用cp代替可能会更好mv,在这种情况下,语法将是cp -r modx-2.1.10pl/* cms/.

相关内容