joergneu

PHP-Script für server2server ftp

geschlossengelöstFragePHPEntwicklung
Ich habe einen Webserver Server1 mit ftp und php und einen Webserver Server2 mit ftp, aber ohne php. Nun möchte ich über ein php-Script eine Datei per ftp direkt von Server1 nach Server2 übertragen.
Gibt es dazu bereits ein fertiges Script?

Gruß
Jörg
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 129034

Url: https://administrator.de/forum/php-script-fuer-server2server-ftp-129034.html

Ausgedruckt am: 14.05.2025 um 02:05 Uhr

45877
45877 10.11.2009 um 12:21:00 Uhr
Goto Top
joergneu
joergneu 10.11.2009 um 14:22:33 Uhr
Goto Top
Wenn google mein Freund wäre, würde ich hier nicht schreiben. Ich habe jetzt seit 2 Tagen gegoogelt.
Wie ich per php von einem lokalen Rechner aus auf den Server hochlade, weiß ich auch. Einen normalen php-ftp-client habe ich bereits auf dem webserver installiert.
Es geht um folgendes:

Server1 (ftp, php) ---> (direkt über das Internet, ohne irgendeinen lokalen Rechner) ---> Server2 (ftp, kein php)

Gruß
Jörg
45877
45877 10.11.2009 um 15:39:53 Uhr
Goto Top
Hallo,

wenn die server fxp können

http://www.tutorials.de/forum/912189-post5.html
Arano
Arano 10.11.2009 um 20:31:58 Uhr
Goto Top
Zitat von @joergneu:
Server1 (ftp, php) ---> (direkt über das Internet, ohne
irgendeinen lokalen Rechner) ---> Server2 (ftp, kein php)

Für das auf Server1 ausgeführte PHP-Script ist doch Server1 der __lokale Server__, also:
Server1 ----> Server2 bzw.
PHP local (Srv1) ----> Server2
1 ----> 1
1 : 1

Irre ich ?
Wo ist/wäre den sonst das Problem ?


~Arano
joergneu
joergneu 11.11.2009 um 08:02:57 Uhr
Goto Top
Server1 ist mir physikalisch nicht zugänglich, ich kann also nicht auf die lokale Platte von Server1 zugreifen. Es handelt sich um Webspace.
Wenn mir das möglich wäre, könnte ich ja gleich mit einem normalen ftp-client arbeiten.
Hintergrund: Ich habe eine Website mit einem Webpublishing-System (Wordpress) und einer mysql-Datenbank bei 1&1. Die Datenbank kann ich per php-script sichern. Diese Sicherung und die gesamte Website will ich über ein php-script in ein zip-archiv schreiben. Dieses zip will ich (möglichst automatisiert, eine interaktive Eingabe reicht aber auch) auf einen anderen Server backuppen, also per ftp übertragen.
Vorteil: Man kann alles über das Internet anstossen, auch vom Handy (iphone) aus. Für Wordpress gibt es einen iPhone-Client. Unterwegs kann ich meine eigene Websiten ändern oder ergänzen und dann gleich vom Browser aus ein Backup anstossen. Ansonsten hätte ich ja kein Backup, wenn ich nur mit dem Handy unterwegs bin.

Gruß
Jörg
nxclass
nxclass 11.11.2009 um 08:55:03 Uhr
Goto Top
hab ich das nun richtig versanden:

  • php läuft auf Server 1
  • eine Datei vom Server 1 die nur per FTP zugänglich ist soll
  • auf den Server 2 per FTP übertragen werden
  • ohne das diese Datei auf dem Webspace von Server 1 zwischengespeichert werden kann
?

evtl. solltest Du dir mal 'PHP Socket' anschauen ( http://www.php.net/manual/de/book.sockets.php )

Edit:
Es gibt ggf noch eine einfachere Möglichkeit - diese wird wahrscheinlich nicht vom Provider unterstützt - ( http://php.net/manual/de/function.file-get-contents.php ) - damit kann man auch auf FTP Quellen zugreifen.
joergneu
joergneu 11.11.2009 um 09:31:35 Uhr
Goto Top
Die Datei auf Server1 ist zugänglich, aber sie soll direkt und nicht durch einen lokalen Rechner vermittelt auf Server2 per ftp übertragen werden.
SSH gibt es weder für 1 noch 2. Wenn ich SSH auf einem der beiden hätte, könnte ich ein Shellscript schreiben, dass mir die Datei gettet bzw. puttet.
So muss ich den Weg über php gehen.
Es wäre auch der einfachste Weg, die Website zu sichern. Ich mache das aktuell über webdav, indem ich die Dateien manuell auf meinen lokalen Rechner kopiere.
Fernziel wäre natürlich ein vollautomatisierter Ablauf: Ein php-Script erkennt, wenn sich eine Datei auf 1 geändert hat, ein anderes erstellt das zip, ein drittes überträgt das zip auf 2.

Gruß
Jörg
Guenni
Guenni 11.11.2009 um 19:55:06 Uhr
Goto Top
Hi joergneu,

unter => http://de2.php.net/manual/de/ref.ftp.php

findest du die ftp-Funktionen von PHP.

Ich habe zwar noch nicht damit programmiert, aber wenn ich da richtig durchblicke, müsstest du damit weiterkommen,

also etwa:

- Auf Server1 läuft PHP und ftp, auf Server2 ftp.

- Das PHP-Skript wird auf Server1 aufgerufen und stellt die ftp-Verbindung

zu Server2 her.

- Dann werden die Dateien mit der entsprechenden Funktion übertragen.


Das wäre z.B. nur mal der Verbindungsaufbau:

<?php

$ftp_res=ftp_connect("server") or die("Ätsch!!!");  

if($ftp_res){

 echo "Verbindung $ftp_res steht<br>"; /* Hier wird NUR eine Resource ausgegeben, KEIN Servername, also z.B.: Verbindung Resource id #2 steht  */  

 ftp_login ($ftp_res,"ftp","ftp") or die("Ätsch!!!");  /* Einloggen mit ftp-Benutzername und ftp-Passwort */  

 echo "Aktuelles Verzeichnis: ".ftp_pwd($ftp_res)."<br>"; /* Das aktuelle Remote-Verzeichnis ausgeben */  

 ftp_close($ftp_res);

}

?>

Also die Verbindung klappt schon mal, beim Rest: Good Luck face-smile

Gruß
Günni
joergneu
joergneu 19.11.2009 um 16:30:43 Uhr
Goto Top
Ich habe auf 1 zwar keinen SSH-Zugang, aber ich kann Shell-Scripte hochladen, die ich über folgendes PHP-Script ausführen kann:

<?php
$output = shell_exec('./backupdb'); # hier wird die SQL-DB gesichert, mit mysqldump --host= --user= --password= dbname > db.sql
echo "<pre>$output</pre>"; # Der Output des Shell-Scripts wird im Browser angezeigt
?>
<?php
$output = shell_exec('zip db.sql.zip db.sql'); # hier wird die SQL-DB gezippt.
echo "<pre>$output</pre>";
?>
<?php
$output = shell_exec('rm archiv.zip'); # hier wird die alte Archivdatei gelöscht
echo "<pre>$output</pre>";
?>
<?php
$output = shell_exec('./archiv'); # hier wird ein Archiv der gesamten Website inkl. SQL-DB erzeugt, mit zip -r archiv.zip /absoluter Pfad der Homepage
echo "<pre>$output</pre>";
?>
<?php
$output = shell_exec('./backup'); # hier wird das Archiv zu Server 2 übertragen, mit ncftpput -u username -p password -R hostname /remotepfad /pfad von archiv.zip auf 1
echo "<pre>$output</pre>";
?>
joergneu
joergneu 20.11.2009 um 11:02:16 Uhr
Goto Top
Kleine Ergänzung. Am Anfang des Scripts kann noch Folgendes stehen:
<?php
copy("http://.../?p=x", "seitex.html");
copy("http://.../?p=y", "seitey.html");
usw.
?>

Hier werden die dynamischen Webseiten, die über Permalinks erreichbar sind, als HTML-Seiten gespeichert. Die HTML-Seiten werden dann mit ins Archiv gepackt. Im Falle eines Datenverlustes oder einer Unerreichbarkeit von Server1 kommt man im Notfall so schneller an die HTML-Information heran und muss nicht erst die SQL-DB zurücksichern.

Gruß
Jörg