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
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;
}
?>