我已经在运行 CentOS 5 和 Apache 2.2 的网络服务器上安装了 cms (modx)。现在有新版本了,我想更新一下。中的说明modx维基建议覆盖现有文件。
我已经下载了 .zip 文件并将其解压。现有安装位于html/cms/
.新文件位于html/modx-2.1.1-pl/
.我通过 ssh 连接访问服务器。
如何移动新文件,html/cms/
同时覆盖现有文件并保留不属于安装文件的文件?我已经尝试过mv
- 命令并阅读了它rsync
或cp
可能合适。
当我尝试时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
您只是参数的顺序错误。该命令的用法mv
是mv source dest
。如果您想将 modx-2.1.1-pl 下的所有内容移动到 cms,您应该这样做mv modx-2.1.1-pl/* cms/
。实际上,使用cp
代替可能会更好mv
,在这种情况下,语法将是cp -r modx-2.1.10pl/* cms/
.