gpt4 book ai didi

php - rsync 同步省略目录

转载 作者:可可西里 更新时间:2023-10-31 23:35:35 26 4
gpt4 key购买 nike

好吧,我可能不是第一个尝试将基于 PHP Web 的界面与 rsync 放在一起以简化部署的人,但确实如此。

我们在本地有一个“QA”服务器,在 Rackspace 有一个“暂存”服务器。我已经设置了 SSH key 对,这样我就可以在两台服务器之间进行 rsync,一切都很好。问题是 rsync 在决定需要更新什么方面有点不稳定。

我编写的脚本首先使用“--dry-run”参数执行 rsync,以获取需要传输的所有内容的列表。命令如下:

$strCheck = shell_exec(
"rsync " .
"--verbose " .
"--recursive " .
"--safe-links " .
"--checksum " .
"--dry-run " .
"--delete " .
"--delete-excluded " .
"--force " .
"--cvs-exclude " .
"--human-readable " .
"/apps/{$system}/ " .
"user@liveserver:/apps/{$system}_staging/"
);

现在一切正常,我可以将返回的字符串解析为需要删除的内容和需要添加/更新的内容。然后,我构建了一个 HTML 表格,该表格根据复选框在层次结构中的位置自动缩进每个复选框。我还使用了一些 javascript,这样我就可以让用户选择一个文件夹中的所有文件。

如果要添加/删除文件夹本身,它会将其包含在列表中。例如:

/newfolder/
/newfolder/file1.php
/newfolder/file2.php

这很好,因为 '/newfolder/' 将以一个缩进显示,而 '/newfolder/file1.php' 和 '/newfolder/file2.php' 将分别在 '/newfolder/' 下显示两个缩进. “/newfolder/”旁边的复选框将自动选择两个“子”文件,大家都很高兴。

但是,如果它只是向文件夹添加/更新文件,它会忽略文件夹本身:

/oldfolder/filea.php
/oldfolder/fileb.php

...

这意味着“/oldfolder/”中的所有文件都将有两个缩进,但没有可见的机制来选择文件夹中的所有文件。

所以我的问题是:在可用的 rsync 参数中我是否遗漏了一些东西,我可以强制它包含任何更新文件的文件夹,或者我是否必须在遍历数组时添加它们?如果是后者,最好的方法是什么?

帮助我 Obi Stack Overflowbi,你是我唯一的希望......

最佳答案

由于不需要创建或删除该目录,它会从 rsync 返回的列表中消失。我认为没有任何方法可以解决这个问题。

我认为您最好的选择是获得类似这样的路径


$path = explode(PATH_SEPARATOR, 目录名($filename));

$filename 是你的文件名。

关于php - rsync 同步省略目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1796810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com