Teil von  SELFPHP
Letztes Update: 14.09.2007 09:07:01

Navigation

Seite Startseite
Seite Aktuelles
Seite Seite News*
Seite Seite Pressemitteilungen*
Seite SELFPHP
Seite Seite Über SELFPHP
Seite Seite Werbung
Seite Seite Kontakt
Seite Seite Unsere Banner
Seite Seite Impressum
Seite Qozido
Seite Seite Diving Edition
Seite Seite Snorkeling Edition
Seite SELFPHP Dokumentation
Seite Seite PHP-Skripte
Seite Seite PHP Befehlsreferenz
Seite Seite PHP 5 Praxisbuch
Seite Seite PHP Code Snippets
Seite Seite SELFPHP in Buchform
Seite Anbieterverzeichnis
Seite Seite Globale Branchen
Seite Seite Webhosting/Server
Seite Services
Seite Seite Forum*
Seite Seite RSS-Feeds*
Seite Seite Downloads*
Seite Seite Gratis-Video-Lektionen*
Seite Seite SELFPHP auf Heft-CD*
Seite Seite Newsletter*
Seite Internet Security
 sponsored by  
Seite Stellenangebote*
Sedo - Bei uns wird PHP großgeschrieben
Seite Premium-Partner   
Webhosting/Serverlösungen
Seite Produktempfehlung   
Seite Seite SteadyBackup

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  
 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 100.000 Beiträgen finden Sie sicher die passende Antwort!*  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!*

Vorname: 
Name:
E-Mail:
 




 

Verzeichnis rekursiv kopieren


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’
)


 




 sponsored by

Sedo - Bei uns wird PHP großgeschrieben


VERIO - An NTT Communications Company


HighText iBusiness


Webspace-Verkauf.de


video2brain




 Premium-Partner
 Webhosting/Serverlösungen

BPI-Systeme


Premium-Partner Pixel X


Premium-Partner First Colo


Premium-Partner dogado Internet




Qozido


© 2001-2008 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt