FTP-Client auf DS soll selbständig Daten laden

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
So jede Stunde?
Wie würds denn aussehen, wenn das Script ausgeführt wird, in der Zwischenzeit aber viele Daten, sagen wir mal 10GB, dazugekommen sind und in einer Stunde grad mal 1GB geladen werden kann? Dann würde das Script ein zweites Mal starten, obwohl die DS noch am laden (von der 1. Ausführung) ist.

EDIT:
Mit -c -r funktionierts tiptop!;)

Solange die beiden wgets ins gleiche Verzeichnis schreiben, dürfte eigentlich nichts doppelt heruntergeladen werden.

Regelmäßiges ausführen macht der crond. Es braucht Informationen dazu, was er machen soll - steht in der /etc/crontab. Weil die DS-Käufer das aber nicht machen sollen, ist das Ändern der /etc/crontab nicht im Disk Station Manager enthalten. (Die DS-Käufer sollen sich ja vornehmlich mit Plattenproblemen auseinandersetzen ... das Produkt heißt ja Disk Station und nicht Automate Station :D)

Also musst du das auf der Kommandozeile machen. Dazu brauchst einen Editor wie den vi. Der ist aber nicht aber nicht ganz einfach. Hast du einen Windows-PC und kannst auf die Shares zugreifen?

itari
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Ich habe einen Windows-PC, ja.
Welche Shares? Die von der DS? Darauf kann ich zugreifen, ja.
Weiss nicht ob du meinen letzten Edit gsehen hast: Wo liegt der Standardordner "public"?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Dann leg mal eine Share namens root an (im Disk Station Manager und gibt volle Rechte drauf).

Dann mach auf der Kommandozeile mount --bind / /volume1/root.

Guck unter Windows nach, ob du die Share root hast.
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
OK, kann den Ordner root sehen.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
hast du einen Editor, der im UNIX/LINUX-Format Dateien editieren kann? Sowas wie Phase5, Notepad++ oder so? Die eingebauten Windows-Editoren gehen leider nicht.

Stell dich auf /root und such das Verzeichnis etc auf und guck nach der Datei crontab.
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
OK, hab mal Phase5 installiert und crontab geöffnet.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Dann kannst da eintragen (neue Zeile)
1<TAB>*<TAB>*<TAB>*<TAB>*<TAB>root<TAB>wget "ftp: .... "

<TAB> = Tabulator-Taste (Leerstellen mag der nicht)

Dann auf der Kommandozeile den Prozess crond neu starten:

killall crond; crond

Und nun müsste der crond alle Stunde zur 1. Minute den wget ausführen *guck*

das war es dann ;)
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
OK. Ich kann die modifizierte crontab aber nicht mehr abspeichern...

Da ich zwei Verzeichnisse habe siehts so aus:
Rich (BBCode):
1              *           *           *            *           root       wget -c -r ftp://xyz:xyz@IP/Ordner1/*
1                                                               root       wget -c -r ftp://xyz:xyz@IP/Ordner2/*

Ist das normal, dass auf der zweiten Zeile keine "*" mehr sind?
Wie kann ich die crontab abspeichern?
Muss ich zuerst crond killen?
Und du bist sicher, dass das stündlich ausgeführt wird und nicht minütlich? Denn zuoberst von crontab steht ja:
Rich (BBCode):
#minute        hour        mday        month        wday        who        command
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
OK. Ich kann die modifizierte crontab aber nicht mehr abspeichern...

warum nicht, ich kann bei mir


Da ich zwei Verzeichnisse habe siehts so aus:
Rich (BBCode):
1              *           *           *            *           root       wget -c -r ftp://xyz:xyz@IP/Ordner1/*
1                                                               root       wget -c -r ftp://xyz:xyz@IP/Ordner2/*

Ist das normal, dass auf der zweiten Zeile keine "*" mehr sind?

Nein ist nicht normal und funktioniert dann auch nicht mehr - schreib die * rein

Wie kann ich die crontab abspeichern?

Das musst du mit Zugriffsrechten und deinem Editor ausmachen

Muss ich zuerst crond killen?

nein, die Edition kann bei laufendem crond erfolgen


Und du bist sicher, dass das stündlich ausgeführt wird und nicht minütlich? Denn zuoberst von crontab steht ja:
Rich (BBCode):
#minute        hour        mday        month        wday        who        command

ja ist richtig - nur wenn ein * drin ist ist es ja beliebig. 1 bei Minute heisst, jede Stunde zur 1. Minute - würdest du alle 3 Minuten ausführen wollen, sähe es so aus: */3

So habe dir inline geantwortet - denk dran, dass die Datei als Unix/Linux-Datei abgespeichert wird (also mit einfachen Zeilenenden), sonst verarbeitet der crond die ganze crontab nicht.
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
So, habs rausgefunden: Liegt an der Schreibberechtigung.
Ich habe aber unter "Gemeinsame Ordner" im Webmenü für alle "Lesen/Schreiben" aktiviert. Lag vermutlich am Vista, mit dem XP gings problemlos.:S
So, mal sehen, wie das läuft...
Was meinst du, wird das gut gehen, wenn jetzt um 18.01 connected wird und jetzt sagen wir 10GB neue Daten auf dem Server wären und bis um 19.01 gerade mal 1GB von den 10GB geladen werden konnte? Was passiert dann? Stellt die DS eine neue Verbindung her und saugt mit der ebenfalls weiter? Oder wird die 1. gekillt? Oder bleibt die 1. bestehen und die 2. wird gar nicht hergestellt weil er merkt, dass die 1. noch nicht fertig wurde?

Wie könnte ich jetzt den Abgleichunsintervall verkürzen? Z.B. auf 30Min?

Ich bedanke mich schon vielmals für deine grossartige Hilfestellung! Hätte das nie alleine zustande gebracht!!
Wär eigentlich auch für den "donate pizza NOW"-Button!:cool:
Na gut, du hättest dann bald mal Gewichtsprobleme...:p

EDIT: Ach noch was:
Ich habe jetzt gesehen, dass jetzt im root-Share-Ordner ein Unterordner root erstellt wurde mit folgendem Inhalt:
[Share-root/root]/IP.des.Servers/Ordner1 mit dem Inhalt vom Ordner 1
und
[Share-root/root]/IP.des.Servers/Ordner2 mit dem Inhalt vom Ordner 2

Ist es irgendwie möglich beide Ordner zusammenzufassen, sodass die Datei1.exe (aus dem Ordner1) und die Datei2.jpg (aus dem Ordner2) in sagen wir dem Ordner "Download" (z.b. root/root/Download) abgelegt wird?
Ist halt einfach noch ein Detail, welches mir das Leben erleichtern würde. Und bei dem was ich bis jetzt gesehen habe, da sollte das auch machbar sein...;)
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
So, habs rausgefunden: Liegt an der Schreibberechtigung.

hab mir schon sowas gedacht ;)


Ich habe aber unter "Gemeinsame Ordner" im Webmenü für alle "Lesen/Schreiben" aktiviert. Lag vermutlich am Vista, mit dem XP gings problemlos.:S

gut so

So, mal sehen, wie das läuft...
Was meinst du, wird das gut gehen, wenn jetzt um 18.01 connected wird und jetzt sagen wir 10GB neue Daten auf dem Server wären und bis um 19.01 gerade mal 1GB von den 10GB geladen werden konnte? Was passiert dann?

keine Ahnung, was passieren wird, vielleicht lehnt dich ja die Quelle ab, weil du mit 2 ftp drauf bist? Du musst es einfach mal ausprobieren. Kannst dich ja wieder melden, wenns Probleme gibt. :)

Stellt die DS eine neue Verbindung her und saugt mit der ebenfalls weiter?

stellt eine neue Verbindung her - der crond startet nur - die Steuerung geht dann an eine Shell weiter ... der crond weiss dann gar nicht, dass was von ihm gestartetes noch läuft

Oder wird die 1. gekillt? Oder bleibt die 1. bestehen und die 2. wird gar nicht hergestellt weil er merkt, dass die 1. noch nicht fertig wurde?

nein - da wird nichts gekillt und es wird auch keine Referenz zum vorhergehende Start hergestellt

Wie könnte ich jetzt den Abgleichungsintervall verkürzen? Z.B. auf 30Min?

zum Beispiel: 1,31 oder 5,35 oder 15,45 oder 0,30 oder */30 - lies doch die Manualseite

Ich bedanke mich schon vielmals für deine grossartige Hilfestellung! Hätte das nie alleine zustande gebracht!!

bitte

Wär eigentlich auch für den "donate pizza NOW"-Button!:cool:
Na gut, du hättest dann bald mal Gewichtsprobleme...:p

jaja die Pizza ... :D
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Wow, funktioniert bis jetzt tadellos! Mal sehen, wies in einer Woche aussieht. Vielleicht fallen mir bis dahin noch ein, zwei Fehler auf...?

Könntest du mir noch meine letzten Fragen beantworten, welche du vermutlich übersehen hast (wegen meinem wilden Editieren).:)
EDIT: Ach noch was:
Ich habe jetzt gesehen, dass jetzt im root-Share-Ordner ein Unterordner root erstellt wurde mit folgendem Inhalt:
[Share-root/root]/IP.des.Servers/Ordner1 mit dem Inhalt vom Ordner 1
und
[Share-root/root]/IP.des.Servers/Ordner2 mit dem Inhalt vom Ordner 2

Ist es irgendwie möglich beide Ordner zusammenzufassen, sodass die Datei1.exe (aus dem Ordner1) und die Datei2.jpg (aus dem Ordner2) in sagen wir dem Ordner "Download" (z.b. root/root/Download) abgelegt wird?
Ist halt einfach noch ein Detail, welches mir das Leben erleichtern würde. Und bei dem was ich bis jetzt gesehen habe, da sollte das auch machbar sein...;)

Desweiteren ist mir grad aufgefallen, dass für die beiden Zielverzeichnisse nur grad 2.33GB Speicher zur Verfügung stehen. Ich habe eine Samsung F1 640GB drin. Wie bieg ich das so hin, dass mir die volle Kapazität zur Verfügung steht?

Wie könnt ich jetzt alle bestehenden FTP-Verbindungen trennen, wenn ich jetzt zum Beispiel mal 2h online spielen möchte? Mit "killall crond" könnt ich vermutlich das erneute starten des "Scripts" ausschalten, oder? Aber was ist mit den bestehenden Verbindungen?

Fragen, Fragen, Fragen!:p

Danke!
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich habe jetzt gesehen, dass jetzt im root-Share-Ordner ein Unterordner root erstellt wurde mit folgendem Inhalt:
[Share-root/root]/IP.des.Servers/Ordner1 mit dem Inhalt vom Ordner 1
und
[Share-root/root]/IP.des.Servers/Ordner2 mit dem Inhalt vom Ordner 2

Ist es irgendwie möglich beide Ordner zusammenzufassen, sodass die Datei1.exe (aus dem Ordner1) und die Datei2.jpg (aus dem Ordner2) in sagen wir dem Ordner "Download" (z.b. root/root/Download) abgelegt wird?
Ist halt einfach noch ein Detail, welches mir das Leben erleichtern würde. Und bei dem was ich bis jetzt gesehen habe, da sollte das auch machbar sein.

ja da wirst du mit den Optionen zum wget spielen müssen: -nd oder -x oder -nH

Desweiteren ist mir grad aufgefallen, dass für die beiden Zielverzeichnisse nur grad 2.33GB Speicher zur Verfügung stehen. Ich habe eine Samsung F1 640GB drin. Wie bieg ich das so hin, dass mir die volle Kapazität zur Verfügung steht?

ja das Verzeichnis des Benutzers root (unter dem ja der wget im crontab läuft) liegt in der System-Partition und die ist nicht grad groß. Da müsstes noch die Option -P bzw. --directory-prefix=prefix benutzen, also z.B. --directory-prefix=/volume1/downloads oder so. Dann bist ja auf der Datenpartition und das ist sicherlich genug Platz.

Wie könnt ich jetzt alle bestehenden FTP-Verbindungen trennen, wenn ich jetzt zum Beispiel mal 2h online spielen möchte?

Wenn du die crontab-Zeilen deaktivieren willst, mach einfach ein #-Zeichen in die erste Spalte und dann killall crond; crond.

Wenn du laufende ftp-Sessions stoppen willst, geht das mit killall wget.

alles klar?

itari
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Ich denke, ich muss erstmal die crontab so modifizieren, dass die Dateien an den richtigen Ort (also nicht ins root-Verzeichnis) geladen werden.
Wie stell ich das genau an? Das kommt in der crontab vermutlich unter command bei wget -c -r -nH -nd ftp://user:pw@IP/Ordner/* rein, oder? Wo denn?

EDIT:
Das wegen dem directory-wechsel versteh ich jetzt. Jedoch hat der ganze Share-root-Ordner nur 2.33GB Speicher zugewiesen bekommen. Und darin befindet sich auch die Volume1. Ich muss irgendwie einen Ordner oberhalb dieser root-Share machen...:?

EDIT2: Mittlerweile hab ich etwas rumprobiert.
Jedoch muss ich irgendwie den Zielordner aus der Systempartition bringen, geht aber irgendwie nicht. Mit cd ../ und dann ls ist immer noch das root-Verzeichnis. Und dieses hat ja begrenzt Platz. Kann mir niemand sagen, wie ich ein "Level" höher komme?
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich denke, ich muss erstmal die crontab so modifizieren, dass die Dateien an den richtigen Ort (also nicht ins root-Verzeichnis) geladen werden.
Wie stell ich das genau an? Das kommt in der crontab vermutlich unter command bei wget -c -r -nH -nd ftp://user:pw@IP/Ordner/* rein, oder? Wo denn?

EDIT:
Das wegen dem directory-wechsel versteh ich jetzt. Jedoch hat der ganze Share-root-Ordner nur 2.33GB Speicher zugewiesen bekommen. Und darin befindet sich auch die Volume1. Ich muss irgendwie einen Ordner oberhalb dieser root-Share machen...:?

EDIT2: Mittlerweile hab ich etwas rumprobiert.
Jedoch muss ich irgendwie den Zielordner aus der Systempartition bringen, geht aber irgendwie nicht. Mit cd ../ und dann ls ist immer noch das root-Verzeichnis. Und dieses hat ja begrenzt Platz. Kann mir niemand sagen, wie ich ein "Level" höher komme?

Du muss runter auf /volume1 ;) Schau dir mal die Dateisysteme an mit df. Also wenn du eine Share erstellst im Disk-Station-Manager namens "meine_downloads", dann wäre diese im Dateisystem unter "/volume1/meine_downloads" zu finden. Also musst im wget auf diese Stelle hin ausgeben lassen.

Anmerkung: Auch unter Windows kannst ja die Laufwerke D:, E: usw. alle als Junction zu einem Verzeichnis machen und unter der Platte C: einhängen. Schau dir das mal in der Datenträgerverwaltung an. So macht es halt Linux immer.

itari
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Ahh!:D
OK, vielen Dank!
Hmm... Jetzt hab ich aber ein anderes Problemchen und zwar werden die Dateien, die in Unterordnern auf dem FTP-Server liegen einfach in den Download-Ordner gelegt, ohne die alte Struktur beizubehalten.
Also auf dem Server: Im Ordner1/Projekt1/DateivonProjekt1_2.exe und DateivonProjekt1_3.exe und Ordner2/Projekt15/DateivonProjekt15_5.exe und DateivonProjekt15_6.exe werden alle in denselben Download-Ordner geschmissen, sodass dort die Projektordner nicht mehr vorhanden sind. Nur noch die DateivonProjektx_y.exe.
Hoffe du verstehst was ich meine...;) Das wird wohl am -nd liegen, nur wie bieg ich das so hin, wie ich das möchte?

EDIT: Ginge das mit cut-dirs?
 
Zuletzt bearbeitet:

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Hab in der Zwischenzeit viel rumprobiert, jetzt jedoch scheint mir wird die crontab gar nicht mehr ausgelesen, oder gestartet.
Habe jedes mal nach dem Editieren killall crond; crond gemacht.
Scheint aber wirklich nicht mehr zu funktionieren. Nicht mal mit ganz einfachen Befehlen wie: wget ftp://user: PW@IP/Ordner1/*

Ich weiss aber vom Besitzer des FTP-Servers, dass nicht mal eine Connection zum Server hergestellt wird, also auch nicht das PW oder der Username falsch ist. Gibt einfach keine Connection, weshalb ich darauf tippe, dass die crontab nicht mehr ausgelesen wird. Diese hat auch keine .htm(l)-Endung oder dergleichen...

Funktioniert einfach nicht mehr.:confused:
Auch alte crontabs, welche vorher funktionierten gehen nicht mehr. Wenn ich aber den Befehl in der Konsole eingebe, gehts wunderbar.

itari, weisst du Rat?:eek:
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hab in der Zwischenzeit viel rumprobiert, jetzt jedoch scheint mir wird die crontab gar nicht mehr ausgelesen, oder gestartet.
Habe jedes mal nach dem Editieren killall crond; crond gemacht.
Scheint aber wirklich nicht mehr zu funktionieren. Nicht mal mit ganz einfachen Befehlen wie: wget ftp://user: PW@IP/Ordner1/*

Ich weiss aber vom Besitzer des FTP-Servers, dass nicht mal eine Connection zum Server hergestellt wird, also auch nicht das PW oder der Username falsch ist. Gibt einfach keine Connection, weshalb ich darauf tippe, dass die crontab nicht mehr ausgelesen wird. Diese hat auch keine .htm(l)-Endung oder dergleichen...

Funktioniert einfach nicht mehr.:confused:
Auch alte crontabs, welche vorher funktionierten gehen nicht mehr. Wenn ich aber den Befehl in der Konsole eingebe, gehts wunderbar.

itari, weisst du Rat?:eek:

Das Herumprobieren muss man nicht per crontab machen. Solange man sich als root angemeldet hat und nicht das Verzeichnis wechselt, wird der wget in der Konsole so ausgeführt wie per crond (bezüglich der Pfade).

Zur /etc/crontab: Der crond der DS ist eigentlich nicht sonderlich empfindlich gegenüber Ungereimtheiten in der /etc/crontab, wäre da nicht der Disk Station Manager, der auch die crontab modifiziert und nachschaut, ob die Einträge immer schön per <TAB> getrennt sind, keine ^W am Ende einer Zeile stehen und auch keine Leerzeilen am Ende der Datei sind.

Die /etc/crontab ist per symbolischen Link mit einer anderen Datei verknüpft und diese andere Datei wird eigentlich vom crond benutzt. Das heißt, man sollte die /etc/crontab nicht löschen, sondern nur ändern.

Manchmal hängt auch der crond oder ist zweimal gestartet (kann man mit ps | grep crond) anschauen (soll zwar nicht sein, aber passiert). Dann bleibt nur übrig, das Start-Skript des crond zu stoppen und wieder zu starten: /usr/syno/etc/rc.d/S04crond.sh stop und dann ein wenig warten und wieder starten: /usr/syno/etc/rc.d/S04crond.sh start. Wenn das nicht geht, muss man das System neu starten und es kann sein, dass es sich nicht herunterfahren lässt, so dass man den Strom abziehen muss.

itari
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Bei ps | grep crond wird folgendes ausgespuckt:
Rich (BBCode):
2534 root 636 S crond
2540 root 212 S grep crond

Habe die DS auch schon neugestartet und auch /usr/syno/etc/rc.d/S04crond.sh stop/start hat nichts gebracht...:S

Leerzeichen sind keine am Ende der crontab und was ist mit ^W gemeint?
 
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