FTP für Frontpagebastler

Status
Für weitere Antworten geschlossen.

Martin.S

Benutzer
Mitglied seit
23. Jul 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Eine Webseite von der DS zum Provider kopieren.


Seit einer Woche etwa habe ich eine DS.
Die ist ideal um mal eben schnell eine Webseite lokal zu testen oder zu überarbeiten.
Steinigt mich meinetwegen, aber dafür benutze ich lokal manchmal sogar das alte Frontpage :)

Nur, wie kriegt man NACH der Modifikation die Webseite wieder zurück zum eigentlichen Provider? OHNE die Frontpageordner?
Habe mir dazu ein kleines Script angelegt.

Der Provider muss dazu FTP unterstützen.

Benutzen auf eigenes Risiko! Es überschreibt ohne Rückfrage.
Bei mir funktioniert es. Vielleicht ist es einem der Forum-Leser hier auch von Nutzen.

Gruss
Martin


PHP:
<?php
/*
	Kopiert von A nach B... Ohne Rückfrage.(Wenn gewünscht, rekursiv mit Unterordnern.)
	Bestehende Daten werden überschrieben!!!
	Frontpageordner werden nicht kopiert. Ebenso nicht gewisse Dateien.
	
	Verwendung auf eigene Gefahr
*/

// CONFIG ----------------------------------------------------------
	    
	// Diese Inhalte werden von Deiner DS zum Provider übertragen
	// Am Anfang und Ende ein /
	define (Kopier_ab_hier, '/meine_testseite_auf_der_DS/'); 


	// Die FTP- Zugriffsdaten Deiner Homepage auf dem Provider
	// FTP Zugriffsdaten kriegst Du vom Provider
	$HOST1 = 'web0815.DeinProvider.ch'; 
	$ID1 =   'web0815';
	$PW1 =   'BlaBla';
	
   // Verzeichnise
    define (FTP_ROOT,        '/html/');                   // Provider - FTP-Ordner, innerhalb dem gearbeitet wird. ('/html/')
    define (Zielverzeichnis, 'mein_zielordner/');         // Dieses Verzeichnis wird bei Bedarf ersellt und da hineinkopiert


// Finger weg von folgenden Ordner und Dateien... :
// -----------------------------------------------------------------
// Frontpageordner zu kopieren ist so ziemlich die dümmste Idee....
$Frontpageordner = array('_private',
 								'_vti_cnf',
								'_vti_pvt',
								'_vti_bin',
								'_vti_aut',
								'_vti_adm',
								'_vti_txt',
								'_vti_log');
   
// Diese Dateien ignorieren.   
$Unerlaubte_Dateien = array('.htaccess',
 							'.htpasswd',
 							'Kopierer.php'
							);  
					
// CONFIG ENDE -----------------------------------------------------
   
   // FTP-Zugriff
    define (connection, ftp_connect($HOST1));              // FTP Verbindung
    define (FTP_Login, @ftp_login(connection,$ID1,$PW1));   // FTP Login
   
   
// FTP Verbindung starten   
   if ((!connection) || (!FTP_Login))                          { die("FTP verbindung fehlgeschlagen"); }
   if (!chdir($_SERVER['DOCUMENT_ROOT'].'/'.Kopier_ab_hier))   { die("Quelle nicht auffindbar"); }
   if (!ftp_chdir(connection,FTP_ROOT))                        { die("FTP Verzeichniswechsel fehlgeschlagen"); }


//die ("Schutz, nur bis hierher...");

   // Starte die Funktion
   copyFolder($_SERVER['DOCUMENT_ROOT'].Kopier_ab_hier , Zielverzeichnis , &$statsCopyFolder,   TRUE,$Frontpageordner,$Unerlaubte_Dateien);
   $statsCopyFolder['bytes'] = binary_multiples($statsCopyFolder['bytes'], true, false);

   echo '<hr>'.$statsCopyFolder['files'] . ' Dateien kopiert ('.$statsCopyFolder['bytes'].').'; 
   @ftp_close(connection);
   
    
function copyFolder($source, $dest, &$statsCopyFolder,   $recursive = false,$Frontpageordner,$Unerlaubte_Dateien)
{
		if (@!ftp_chdir(connection,FTP_ROOT.$dest))
		{
		echo '<font color="#FF0000"><span style="background-color: #FFFF00"><b>'."$dest wird erstellt</b></span></font></p><br>\n";
			   ftp_mkdir    (connection,FTP_ROOT.$dest);
			   ftp_chdir    (connection,FTP_ROOT.$dest);
		}
		else
		{
		  echo "($dest Existiert bereits).<br>\n";
		}
		
    $handle = @opendir($source);
    if(!$handle)  { return false; }
    
    while ($file = @readdir ($handle))
    {
		if (in_array($file, $Frontpageordner))            // zu ignorierende Verzeichnisse auslassen
		{
			echo "<b>Frontpageordner $file wird nicht kopiert!</b><br>" ;
			continue;
		}
	
	
        if (eregi("^\.{1,2}$",$file))                      // Gleiche Verrzeichnisebene und übergeordnetes Verzeichnis ignorieren
        {
            continue;
        }
		
		
        if(!$recursive && $source != $source.$file."/")   // Keine Verzeichnisse durchsuchen, wenn Rekursion nicht gewünscht wurde
        {
            if(is_dir($source.$file))
                continue;
        }
		
	        
        // Ein Verzeichnis? Dann sich selber aufrufen!
		if(is_dir($source.$file))
        {
            copyFolder($source.$file."/", $dest.$file."/", $statsCopyFolder, $recursive,$Frontpageordner,$Unerlaubte_Dateien);
        }
		
		// Eine Datei? Kopieren
        else
        {
		if (in_array($file, $Unerlaubte_Dateien))       // zu ignorierende Dateien auslassen
		{
			 echo "<b>Datei $file wird nicht kopiert!</b><br>" ;
			 continue;
		}		
		
			echo "DataCopy ---> ". $dest.$file.'<br>';
			ftp_put(connection, FTP_ROOT.$dest.$file, $source.$file, FTP_BINARY);

            $statsCopyFolder['files']++;
            $statsCopyFolder['bytes'] += filesize($source.$file); 
        }
    }
    @closedir($handle);
   } 
   
   
  
function binary_multiples($size, $praefix=true, $short= true)
{

    if($praefix === true)
    {
        if($short === true)
        {
            $norm = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
        }
        else
        {
            $norm = array('Byte', 
                                        'Kilobyte', 
                                        'Megabyte', 
                                        'Gigabyte', 
                                        'Terabyte', 
                                        'Petabyte', 
                                        'Exabyte', 
                                        'Zettabyte', 
                                        'Yottabyte'
                                        );
        }
        
        $factor = 1000;
    }
    else
    {
        if($short === true)
        {
            $norm = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB');
        }
        else
        {
            $norm = array('Byte', 
                                        'Kibibyte', 
                                        'Mebibyte', 
                                        'Gibibyte', 
                                        'Tebibyte', 
                                        'Pebibyte', 
                                        'Exbibyte', 
                                        'Zebibyte', 
                                        'Yobibyte'
                                        );
        }
        
        $factor = 1024;
        
    }
    
    $count = count($norm) -1;
    
    $x = 0;
    while ($size >= $factor && $x < $count) 
    { 
        $size /= $factor; 
        $x++;
    } 
  
    $size = sprintf("%01.2f", $size) . ' ' . $norm[$x];
    return $size; 
}  
   

?>
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat