Teil von  SELFPHP
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++

Suche


Anzeigen

 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Verzeichnis rekursiv kopieren

SELFPHP Produktempfehlung
Microsoft Windows Server 2008
Seite Windows Server 2008
Seite
Microsoft SQL Server 2008
Seite SQL Server 2008
Seite
Microsoft Expression Web 3
Seite Microsoft Expression
Seite



Systemvoraussetzung

  • Linux
  • PHP 3
  • PHP 4
  • PHP 5

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.




 




:: Premium-Partner ::

Webhosting/Serverlösungen

BPI-Systeme weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Kaspersky Labs GmbH weitere Sponsoren
 

:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Vorschaubilder erstellen

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


Wie lang ist der längste Datensatz einer Tabellenspalte?

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2010 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt
© 2005-2010 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de