Systemvoraussetzung
Datei(en)
copyShellFolder.php
Problem
Ein komplettes Verzeichnis inkl. Unterverzeichnissen zu kopieren, gehört zu
den häufigen Aufgaben, die auf einem Webserver zu erledigen sind. So könnte
z. B. bei einem Forums-Update
das alte Verzeichnis gesichert werden, sodass
in Fehlerfall schnell das alte Forum wieder online gestellt wird.
Lösung
Wir möchten Ihnen diesmal eine andere und wesentlich schnellere Lösung
zeigen. Das Programm basiert auf PHP mit Anbindung an die Shell. Wir werden
also den kompletten Kopiervorgang nicht durch PHP abwickeln, sondern durch
die nachfolgende, sehr kleine Funktion.
function copyShellFolder($source, $dest)
@param string $source
@param string $dest
@return mixed
Die Funktion copyShellFolder() erwartet als Parameter zum einen das zu
kopierende Verzeichnis ($source), zum anderen das Zielverzeichnis ($dest).
Im ersten Schritt überprüfen wir (34), ob es sich bei dem übergebenen und zu
kopierenden Verzeichnis um ein existentes Verzeichnis handelt. Falls es das
Verzeichnis nicht geben sollte, brechen wir an dieser Stelle die Funktion ab
und geben als Rückgabewert „FALSE“ zurück (35).
Sollte das Verzeichnis existieren, bauen wir den String für unseren Kopiervorgang
zusammen (37). Der String für unseren Kopiervorgang baut sich wie folgt
auf:
- cp Der Kopierbefehl
- -R Rekursiv kopieren, also auch Unterverzeichnisse
- -v Ausgabe erzeugen, zeigt den Kopiervorgang in einem Array an
- $source Quellverzeichnis
- $dest Zielverzeichnis
Nachdem wir den String zusammengesetzt haben, können wir im nächsten
Schritt den Befehl ausführen (39) und erhalten, falls wir den Schalter „v“
angegeben haben, als Rückgabe (41) ein Array mit den kopierten Dateien und
Verzeichnissen.
32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: | function copyShellFolder($source, $dest){
if (!is_dir($source)) return false; $shellBefehl = "cp -Rv $source $dest";
exec($shellBefehl, $var); return $var; }
|
Beispiel 11.1: copyShellFolder.php
Sie müssen hier lediglich das Quellverzeichnis (45) und das Zielverzeichnis (47)
setzen, um dann im späteren Schritt die Funktion ausführen (49) zu können.
Als Rückgabewert erhalten Sie (Schalter „v“) ein Array mit den kopierten
Dateien und Verzeichnissen. 45: 46: 47: 48: 49: 50: 51:
| $source = 'backup3/';
$dest = 'backup4/';
$var = copyShellFolder($source, $dest);
print_r($var); |
Beispiel 11.2: copyShellFolder.php
Ausgabe im Browser
Array
(
[0] => ’backup3/’ >
’backup4/backup3’
[1] => ’backup3/9levuh_1137603141.jpg’ >
’backup4/backup3/9'
levuh_1137603141.jpg’
[2] => ’backup3/bs9tyo_1137603275.jpg’ >
’backup4/backup3/'
bs9tyo_1137603275.jpg’
[3] => ’backup3/fihedp_1137603349.jpg’ >
’backup4/backup3/'
fihedp_1137603349.jpg’
[4] => ’backup3/che.gif’ >
’backup4/backup3/che.gif’
[5] => ’backup3/logo.gif’ >
’backup4/backup3/logo.gif’
[6] => ’backup3/u_blau.gif’ >
’backup4/backup3/u_blau.gif’
[7] => ’backup3/.jpg’ >
’backup4/backup3/.jpg’
[8] => ’backup3/gif’ >
’backup4/backup3/gif’
[9] => ’backup3/gif/Testdatei1.txt’ >
’backup4/backup3/gif/Testdatei1.txt’
[10] => ’backup3/gif/Testdatei2.txt’ >
’backup4/backup3/gif/Testdatei2.txt’
[11] => ’backup3/jpg’ >
’backup4/backup3/jpg’
[12] => ’backup3/jpg/Testdatei1.txt’ >
’backup4/backup3/jpg/Testdatei1.txt’
[13] => ’backup3/pdf’ >
’backup4/backup3/pdf’
[14] => ’backup3/glob1.php’ >
’backup4/backup3/glob1.php’
[15] => ’backup3/glob2.php’ >
’backup4/backup3/glob2.php’
) |
Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!
Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.
|