例如,我有6台服务器,其中有大量的ftp帐户都设置不同。有些登录到具有httpdocs / httpsdocs / public_html / error_docs / sub_domains的FTP根目录以及类似的文件夹,有些会直接登录到索引文件所在的httpdocs。我只想备份主要的工作网络文件而不是其他所有可能存在的东西
我已经设置了一种定义工作目录的方法,但这意味着我必须为每个服务器或备份创建不同的脚本。
是否有可能让php脚本找到或找出主要的web目录? 一种选择是设置一个数据库,该数据库具有要使用的目录,如果ftp直接登录到该目录,则没有任何内容,但我要在这里进行自动化。
如果不可能,我会选择数据库选项。
答案 0 :(得分:2)
你无法通过FTP单独弄清楚apache中配置的根目录是什么 - 除非你获取httpd.conf并解析它,我相信你不想这样做。据推测,您正在循环使用相同的脚本从多个服务器执行此备份?
如果是这样,只需在数组中定义所有内容,然后使用foreach
循环它,并且每次迭代都可以使用所有相关数据。
所以我会做这样的事情:
// This will hold all our configuration
$serverData = array();
// First server
$serverData['server1']['ftp_address'] = 'ftp://11.22.33.44/';
$serverData['server1']['ftp_username'] = 'admin';
$serverData['server1']['ftp_password'] = 'password';
$serverData['server1']['root_dir'] = 'myuser/public_html';
// Second server
$serverData['server2']['ftp_address'] = 'ftp://11.22.22.11/';
$serverData['server2']['ftp_username'] = 'root';
$serverData['server2']['ftp_password'] = 'hackmeplease';
$serverData['server2']['root_dir'] = 'myuser/public_html';
// ...and so on
// Of course, you could also query a database to populate the $serverData array
foreach ($serverData as $server) {
// Process each server - all the data is available in $server['ftp_address'], $server['root_dir'] etc etc
}
答案 1 :(得分:0)
不,如果不知道如何为每个域设置Apache,就无法可靠地完成它。你最好使用数据库/配置文件路由。一次性设置成本加上一点点维护,因为站点被添加/修改/删除。
您可能需要花费数天才能获得探测器脚本,并且下次出现一些未知配置时它将会失败。尝试创建AI很难......你必须先将它变为人工愚蠢程度(例如MS Paperclip)。