App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
[PHP] ftp (unter)verzeichnisse auslesen
- Ersteller benny17
- Erstellt am
Moin,
ich habe folgendes vor: ich möchte täglich eine Datensicherung meines FTP Servers durchführen, da täglich neue daten hinzukommen und ich sie als sicherung bei mir lokal haben möchte und nicht nur beim hoster. also woltle ich mir ein php script basteln, dass ich jeden morgen einmal starte und es per ftp zugriff die daten ausliest und auf meine platte runterlädt
was ich shcon hinbekommen habe:
- ftp verbindung herstellen
- ins richtige verzeichnis wechseln
- zwischen dateien und ordnern unterscheiden
- dateien runterladen und in bestimmten zielverzeichnis speichern
was ich noch nicht hinbekommen habe:
- unterverzeichnisse auslesen
unterverzeichnisse können ja x-beliebig tief gehen und ich habe keine ahnung, wie ich das realisieren soll. demnach müsste ich doch etliche schleifen untereinander schachteln, die immer wieder zwischen ordner und datei entscheiden, wenns ein ordner ist, reingehen und wieder zwischen ordnern und datei entscheiden. und die dateien ebent runterladen.
glaub ich mach mir das viel zu kompliziert
hier mal mein code, bisher:
//edit: habs nun slebst ansatzweise hinbekommen, indem ich das als funktion geschrieben habe und ich die funktion sich selbst aufrufen lasse. dann bekomme ihc jedoch einen error, dass nur 6 verbindungen zugelassen sind. logisch, dass er dann abbricht, weil in der funktion ja jedesmal die verbindung hergetsellt wird. aber wenn ich den login vor die funktion schriebe,haut dsas auch net hin....
wäre dankbar für ein paar tipps !
ich habe folgendes vor: ich möchte täglich eine Datensicherung meines FTP Servers durchführen, da täglich neue daten hinzukommen und ich sie als sicherung bei mir lokal haben möchte und nicht nur beim hoster. also woltle ich mir ein php script basteln, dass ich jeden morgen einmal starte und es per ftp zugriff die daten ausliest und auf meine platte runterlädt
was ich shcon hinbekommen habe:
- ftp verbindung herstellen
- ins richtige verzeichnis wechseln
- zwischen dateien und ordnern unterscheiden
- dateien runterladen und in bestimmten zielverzeichnis speichern
was ich noch nicht hinbekommen habe:
- unterverzeichnisse auslesen
unterverzeichnisse können ja x-beliebig tief gehen und ich habe keine ahnung, wie ich das realisieren soll. demnach müsste ich doch etliche schleifen untereinander schachteln, die immer wieder zwischen ordner und datei entscheiden, wenns ein ordner ist, reingehen und wieder zwischen ordnern und datei entscheiden. und die dateien ebent runterladen.
glaub ich mach mir das viel zu kompliziert
hier mal mein code, bisher:
Code:
<?
function get_file_list($path) {
//Logindaten:
$ftp_server="xxx";
$ftp_user_name="xx";
$ftp_user_pass="xxx";
$conn_id = ftp_connect("$ftp_server");
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");
ftp_pasv($conn_id, true);
$file_list = ftp_nlist($conn_id, "");
sort($file_list);
// Liste wird ausgelesen und jeder Teil des Arrays ind Variable $file geschrieben
foreach($file_list as $file) {
// Filegröße wird überprüft. Ordner = -1
$file_size=ftp_size($conn_id, $file);
// Wenn Filegröße = -1 (Ordner), dann...
if ($file_size=='-1') {
// Wenn Filename ungleich ".." ist (als ein normaler Ordner ist), dann...
if ($file!=='..') {
$newpath = $path."/".$file;
get_file_list($newpath);
}
}
// Wenn Filegröße ungleich -1 (also Datei), dann
else {
//$download=ftp_get($conn_id, "Datensicherung/".$file, $file, FTP_BINARY);
echo $file." erfolgreich runtergeladen!<br />";
}
ftp_quit($conn_id);
}
}
get_file_list("xxx");
?>
//edit: habs nun slebst ansatzweise hinbekommen, indem ich das als funktion geschrieben habe und ich die funktion sich selbst aufrufen lasse. dann bekomme ihc jedoch einen error, dass nur 6 verbindungen zugelassen sind. logisch, dass er dann abbricht, weil in der funktion ja jedesmal die verbindung hergetsellt wird. aber wenn ich den login vor die funktion schriebe,haut dsas auch net hin....
wäre dankbar für ein paar tipps !
Zuletzt bearbeitet:
Phil S.
Vice Admiral Special
- Mitglied seit
- 26.12.2001
- Beiträge
- 802
- Renomée
- 5
- Standort
- Mittelfranken
- Mein Laptop
- Schwarzes Macbook
- Prozessor
- AMD XP-M 2600+
- Mainboard
- ABIT KV7
- Speicher
- 2x512 MB Corsair Pro RAM
- Grafikprozessor
- ATI Radeon 9800 pro
- Display
- 1x 19" Belinea 106080 und 1x17" Iiyama HM704UTc, beide auf 1152x864
- HDD
- WD1600BB
- Optisches Laufwerk
- LG Brenner und AOpen DVD-Rom
- Soundkarte
- Creative Live 1024
- Gehäuse
- LianLi (das mit dem Aquarium Seitenteil)
- Betriebssystem
- Gentoo
- Webbrowser
- Firefox
- Verschiedenes
- ...und dann war da noch der quietische iMac G3. :-)
Tach,
Bye
Phil
Erstelle die Verbindung nicht bei jedem Schleifendurchlauf neu, sondern nur einmal beim start außerhalb der Funktion. Der Funktion übergibst du dann die Verbindungs ID.//edit: habs nun slebst ansatzweise hinbekommen, indem ich das als funktion geschrieben habe und ich die funktion sich selbst aufrufen lasse. dann bekomme ihc jedoch einen error, dass nur 6 verbindungen zugelassen sind. logisch, dass er dann abbricht, weil in der funktion ja jedesmal die verbindung hergetsellt wird. aber wenn ich den login vor die funktion schriebe,haut dsas auch net hin....
wäre dankbar für ein paar tipps !
Bye
Phil
//edit: habs hinbekommen.....ein letzten versuch hab ich noch gemacht und da hats geklappt...
so, nächstes problem
das mit dem rekursiven auslesen und runterladen habe ich hinbekommen. ich möchte nun noch, dass ich die Dateinamen in einem Array speichern kann, ganz am ende alühabetisch sortieren und in eine textdatei schreiben. so, das einzige was mir probleme bereitet, ist die werte in ein session array (da ich eine gesonderte datei für die funktionen habe) zu schreiben. dadurch, dass ich das ganze rekursiv behandel, habe ich im array nachehr manche werte doppelt. ich hab zig varianten getestet, ich poste jetzt einrfach mal meine funkjtionieredne funktion für das rekursive downloaden vom ftp server (ohne session array...). vielleicht kann mir dann ja jemand einen tipp geben, wie und wo ich was korrekt einfügen muss, um die werte (einmalig) in die session zu schreiben. könnte ich sonst auch umständlich vor jedem hinzufügen, kucken, ob der wert shcon im array vorhanden ist, und nur wenn nicht, den wert hinzufügen...?! bin grads ziemlich ratlos
so, nächstes problem
das mit dem rekursiven auslesen und runterladen habe ich hinbekommen. ich möchte nun noch, dass ich die Dateinamen in einem Array speichern kann, ganz am ende alühabetisch sortieren und in eine textdatei schreiben. so, das einzige was mir probleme bereitet, ist die werte in ein session array (da ich eine gesonderte datei für die funktionen habe) zu schreiben. dadurch, dass ich das ganze rekursiv behandel, habe ich im array nachehr manche werte doppelt. ich hab zig varianten getestet, ich poste jetzt einrfach mal meine funkjtionieredne funktion für das rekursive downloaden vom ftp server (ohne session array...). vielleicht kann mir dann ja jemand einen tipp geben, wie und wo ich was korrekt einfügen muss, um die werte (einmalig) in die session zu schreiben. könnte ich sonst auch umständlich vor jedem hinzufügen, kucken, ob der wert shcon im array vorhanden ist, und nur wenn nicht, den wert hinzufügen...?! bin grads ziemlich ratlos
Code:
function get_file_list($path, $conn_id) {
ftp_chdir($conn_id, $path); // ordnerwechsle auf ftp
if(!is_dir($path)) {mkdir($path);} // wenn nicht vorhanden, lokalen ordner erstellen
chdir($path); //wechsel in diesen ordner
$file_list = ftp_nlist($conn_id, "");
asort($file_list);
// Liste wird ausgelesen und jeder Teil des Arrays ind Variable $file geschrieben
foreach($file_list as $file) {
// Filegröße wird überprüft. Ordner = -1
$file_size=ftp_size($conn_id, $file);
// Wenn Filegröße ungleich -1 (also Datei), dann
if ($file_size>"-1") {
$download=ftp_get($conn_id, $file, $file, FTP_BINARY);
}
// Wenn Filegröße = -1 (Ordner), dann...
else {
// Wenn Filename ungleich ".." ist (als ein normaler Ordner ist), dann...
if ($file!=='..' && $file!=='.') {
$_SESSION['ordner']++;
get_file_list($file, $conn_id);
ftp_cdup($conn_id);
chdir("..");
}
}
}
}
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 11
- Aufrufe
- 1K