est*_*est 4 symbolic-link shell-script cp
我正在尝试编写一个站点部署脚本,它将像这样复制文件:
来源
.
..
src/
html/
Run Code Online (Sandbox Code Playgroud)
目标
.
..
src/
html/ -> /var/www/ftproot/mysite
Run Code Online (Sandbox Code Playgroud)
我希望 SOURCE 中的文件html转到 DEST /var/www/ftproot/mysite。
脚本是:
cd SOURCE
cp -Rf * DEST
Run Code Online (Sandbox Code Playgroud)
每次运行脚本时,都会出现此错误:
cp: cannot overwrite non-directory 'html' with directory `html'
Run Code Online (Sandbox Code Playgroud)
由此,我推断cp当 DEST 具有符号链接时无法自动将文件复制到 DEST 中。
笔记:
按照cp 手册,我设置POSIXLY_CORRECT为 1。这不起作用。
我不得不将站点链接html到ftproot/mysite而不是反之,因为 ftp 用户有奇怪的访问模式。
这家伙修改了 cp源代码并重新编译了它。我不想对生产服务器这样做。
关于如何解决这个问题的任何想法?
对于任何文件复制,我都会建议rsync,cp因为它可以更好地控制应该复制什么以及如何复制。在你的情况下,只需给出命令:
cd SOURCE
rsync -K -a . DEST
Run Code Online (Sandbox Code Playgroud)
-K 选项完全符合您的要求:-K, --keep-dirlinks 将接收器上的符号链接目录视为目录
| 归档时间: |
|
| 查看次数: |
6778 次 |
| 最近记录: |