通常,我会通过安全 FTP 将更新的文件/脚本上传到我的服务器,以便在进行更改时替换这些文件的现有副本。但这会带来直接写入这些文件的不良行为。这意味着在文件上传期间,对于在此期间加载网站的任何人而言,这些文件/脚本都会被破坏(由于不完整)。我该如何修复此问题?
我假设安全 FTP/SSH 守护程序足够智能,可以将正在进行的下载保存在临时位置(如 /tmp)直到传输完成,然后快速将文件复制到目标位置。有没有简单的方法可以让它做这样的事情?
谢谢!
答案1
在每个文件的基础上,rsync 都有这种行为,所以我建议使用它(出于各种其他原因)。如果您需要自动交换整个网站,那么 Josh 的答案就是您的最佳选择。
答案2
将所有内容 (S)FTP 到临时目录。完成后,重命名目标目录并重命名临时目录以取代它。
例如,假设您要将所有内容上传至public_html
:
通过 SFTP 创建一个
public_html_new
与以下目录同级的新目录public_html
上传所有内容至
public_html_new
上传完成后,重命名
public_html
为public_html_old
,并将文件重命名public_html_new
为public_html