Ik ben bezig met een backup script voor sites op externe servers. Deze wil ik gaan backuppen doormiddel van de PHP ftp functies. Het script loopt de mappen door en bouwt 2 array's op. De eerste word gevult met alle mappen de andere met alle files.
Test ik het script op ftp server 1 krijg ik andere resultaten dan op ftp server 2
Mijn vermoeden is dat ftp_nlist verschillende resultaten geeft (regel 40 script).Nu ben ik niet een PHP expert dus misschien doe ik het ook wel ergens fout.
op de eerste server word de array gevult met waardes als deze
op de 2de server krijgt ik volgend resultaat
De root folder is hier www. Zoals te zien is neemt hij wel de subfolders op in het array alleen doet hij het hier zonder het volldige path. in het eerste resultaat worden subfolders wel in het volledige path opgenomen. Ik had bij de tweede server dus ook het resultaat verwacht in de vorm van
Hoe kan dit verschil ontstaan? Zit het in me script of is er een andere reden.
Het script
Test ik het script op ftp server 1 krijg ik andere resultaten dan op ftp server 2
Mijn vermoeden is dat ftp_nlist verschillende resultaten geeft (regel 40 script).Nu ben ik niet een PHP expert dus misschien doe ik het ook wel ergens fout.
op de eerste server word de array gevult met waardes als deze
code:
1
2
3
4
5
6
7
8
| Array
(
[0] =>
[1] => Map 1
[2] => Map2
[3] => Map2/Map 1
[4] => Map2/Map 2
) |
op de 2de server krijgt ik volgend resultaat
code:
1
2
3
4
5
6
7
| Array
(
[0] => www
[1] => test
[2] => cms
[3] => Discogs
) |
De root folder is hier www. Zoals te zien is neemt hij wel de subfolders op in het array alleen doet hij het hier zonder het volldige path. in het eerste resultaat worden subfolders wel in het volledige path opgenomen. Ik had bij de tweede server dus ook het resultaat verwacht in de vorm van
code:
1
2
3
4
5
6
7
| Array
(
[0] => www
[1] => www/test
[2] => www/cms
[3] => www/Discogs
) |
Hoe kan dit verschil ontstaan? Zit het in me script of is er een andere reden.
Het script
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| $loophasrun = 0; $x = 1; // Voeg header aan mailreport toe $mailoutput .= "<h3>Backup FTP Servers</h3>"; // Loop de de diverse FTP Sites for ($a = 0; $a < sizeof($ftpsite); $a++) { $folderarray = array($ftpsite[$a]['ftproot']); $filesarray = array(); $conn_id = ftp_connect($ftpsite[$a]['ftphost']); $login_result = ftp_login($conn_id, $ftpsite[$a]['ftpuser'], $ftpsite[$a]['ftppass']); if ((!$conn_id) || (!$login_result)) { $mailoutput .= "<b>FTP connection has failed! for: ".$ftpsite[$a]['ftphost']."</b><br/><br/>" ."Attempted to connect to $ftp_server for user $ftp_user_name"; exit; } else { while ($loophasrun <= $x) { getFoldersandFiles ($conn_id, $folderarray[$loophasrun], $ftpsite[$a]['ftproot'] ); $x = count($folderarray) -1; } print_r ($folderarray); makeLocalfolders ($ftpsite[$a]['ftpstoreroot'], $folderarray); $totaloffilesize = downloadFiles ($ftpsite[$a]['ftpstoreroot'], $conn_id, $filesarray); ftp_close($conn_id); if ($makezipftp == true) { $command = "7za a -r ".$backupdirmysqlftp. $ftpsite[$a]['ftphost']."_".date("Y-m-d-H-i-s") .".gz ".$ftpsite[$a]['ftpstoreroot']; system($command); removedir($ftpsite[$a]['ftpstoreroot']); } $mailoutput .= "<b>Completed ".$ftpsite[$a]['ftphost']."</b> total of files size: ".$totaloffilesize."<br/>"; } } function getFoldersandFiles ($conn_id, $folder, $ftproot) { $tempfolderlist = ftp_nlist ($conn_id, $folder); $i = 0; $counter = count($tempfolderlist) - 1; while ($i <= $counter) { $res = ftp_size($conn_id, $tempfolderlist[$i]); if("$res" != "-1") { $tempfilesarray = array($tempfolderlist[$i]); unset($tempfolderlist[$i]); } $i++; } global $filesarray, $folderarray, $loophasrun; if ($tempfilesarray != "") { $filesarray = array_merge($filesarray, $tempfilesarray); } if ($tempfolderlist != "") { $folderarray = array_merge($folderarray, $tempfolderlist); } $loophasrun++; } function makeLocalfolders ($ftpstoreroot, $folderarray) { foreach ($folderarray as $folder) { if ($folder != "") { mkdir($ftpstoreroot .$folder,0777,TRUE); } } } function downloadFiles ($ftpstoreroot, $conn_id, $filesarray) { $totaloffilessize = 0; foreach ($filesarray as $file) { $handle = fopen($ftpstoreroot.$file, 'w'); $totaloffilessize = ftp_size($conn_id, $file) + $totaloffilessize; ftp_fget($conn_id, $handle, $file, FTP_ASCII, 0); fclose($handle); } return $totaloffilessize; } |
http://www.Quinie.nl
http://soundcloud.com/quinie
https://www.wereoutthere.nl