ubuntuusers.de

lftp zwischen 2 Netzen

Status: Ungelöst | Ubuntu-Version: Xubuntu 18.04 (Bionic Beaver)
Antworten |

glaskugel

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

Nachdem ich es mit rsync nicht geschafft habe, möchte ich zwischen 2 Netzen mit lftp synchronisieren. Es geht darum DVB-Aufnahmen in dem einen Netz in ein 2. Netz zu kopieren. Auf der DVB-Box läuft ein ftp-Server. Im gleichen Netz schicke ich mit folgendem Befehl Dateien zur DVB-Box.

lftp -e "mirror -R /videos/movies/mkv/mkv_hd/ /hdd/movie/mkv_hd -e; exit" -u root, 192.168.178.143

Ich möchte nun Dateien von 192.168.178.143 holen und auf 192.168.2.109 speichern.. Verbindung besteht über einen Server-PC mit 2 NICs und den IP-Adressen 192.168.178.100 und 192.168.2.100

Ubuntu-PC 192.168.2.109 sendet einen Ping an 192.168.178.143

PING 192.168.178.143 (192.168.178.143) 56(84) Bytes Daten.
64 Bytes von 192.168.178.143: icmp_seq=1 ttl=63 Zeit=0.996 ms

Umgekehrt geht es aber nicht, ein Ping von der DVB-Box 192.168.178.143 an den Ubuntu PC 192.168.2.109 ist nicht erfolgreich. Das ist aber auch von der Netzwerkkonfiguration so gewollt. Raus kann man aus dem 2er-Netz, aber nicht rein.

sh4711

Anmeldungsdatum:
13. Februar 2011

Beiträge: 1181

Leider kenne ich lftp nicht, aber ...

lftp -e "mirror -R /videos/movies/mkv/mkv_hd/ /hdd/movie/mkv_hd -e; exit" -u root, 192.168.178.143

wird von dem ubuntu (192.168.2.109) ausgeführt, richtig?

Probiere es von dem Server aus aus zufüren und verweise auf eine Netzwerkfreigabe welche wieder zum ubuntu (192.168.2.109) führt.

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

Leider kenne ich lftp nicht, aber ...

Kennst du einen ftp-client bei dem idente Dateien nicht "synchronisiert" werden? Ich kenne nur lftp dafür. Vielleicht kommst du mit der Manpage besser klar: https://lftp.yar.ru/lftp-man.html

Probiere es von dem Server aus aus zufüren und verweise auf eine Netzwerkfreigabe welche wieder zum ubuntu (192.168.2.109) führt.

Es geht darum einige TB zu kopieren und ich denke das schränkt die Performance gewaltig ein. Der Unterschied zu meinem Beispiel in der anderen Richtung ist, dass ich nur an den ts-Dateien an der DVB-Box interessiert bin, während in der anderen Richtung der komplette Ordner synchronisiert wird. Der Ablauf ist also dieser, Aufnahme auf der DVB-Box, synchronisieren der ts-Dateien zum PC, Erstellen von mkv-Dateien aus den ts-Dateien, Synchronsiieren eines Ordners mit mkv-Dateien zurück zur DVB-Box.

Der ftp-Server läuft auf der DVB-Box. Die DVB-Box hat keinen Zugriff auf das Netz des PCs, der PC hat aber Zugriff auf das Netz der DVB-Box.

sh4711

Anmeldungsdatum:
13. Februar 2011

Beiträge: 1181

Verstehe ich das richtig?

Server_PC mit 2 Nics kann mit dvb_box und Ubuntu_PC kommunizieren (lesend und schreibend) die gesamte Netzwerkkommunikation zwischen dvb_box und Ubuntu_PC erfolgt über Server_PC

Das würde heißen, würden dvb_box und Ubuntu_PC in großer Masse kommunizieren, wäre die restliche Bandbreite eh schlecht. Dann sollte eigentlich die Ausführung von lftp auf dem Server die Performance auch nicht merklich mehr drücken. lftp führt ja keine wirklichen Rechenoperationen aus sondern schiebt "nur" Daten zwischen dvb_box und Ubuntu_PC hin und her. Ggf. mal mit ein paar Dateien einen Test machen und die Performance prüfen.

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

Server_PC mit 2 Nics kann mit dvb_box und Ubuntu_PC kommunizieren (lesend und schreibend) die gesamte Netzwerkkommunikation zwischen dvb_box und Ubuntu_PC erfolgt über Server_PC

Genau, der Server kann auf alles zugreifen und auch schreiben, aber DVB-Box und Linux-PC kann nicht auf den Server zugreifen und dort am Server lesen oder schreiben.

Das würde heißen, würden dvb_box und Ubuntu_PC in großer Masse kommunizieren, wäre die restliche Bandbreite eh schlecht.

Egal, ich kann das nachts laufen lassen. Wenn da die beiden Partitionen gespiegelt werden, sind ein paar hinzugekommene Aufnahmen nicht so schlimm.

Dann sollte eigentlich die Ausführung von lftp auf dem Server die Performance auch nicht merklich mehr drücken

Ja, aber wie schon geschrieben egal. Primär geht es darum die DVB-Box nicht zu sehr zu belasten. Verschlüsselung ist da nicht notwendig.

Ggf. mal mit ein paar Dateien einen Test machen und die Performance prüfen.

Die lftp-Syntax ist mein Problem.

https://lftp.yar.ru/lftp-man.html

lftp has built-in mirror which can download or update a whole directory tree. There is also reverse mirror (mirror -R) which uploads or updates a directory tree on server. Mirror can also synchronize directories between two remote servers, using FXP if available.

Ich versuche mich in https://linoxide.com/linux-how-to/lftp-commands/ (12 lftp Commands to Manage Files with Examples ) hineinzudenken. Lftp ist extrem mächtig. Endziel ist das nur die ts-Dateien am PC gespiegelt werden, ich bin mit dem kompletten Ordner aber auch schon viel weiter.

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

https://www.cyberciti.biz/faq/lftp-mirror-example/ Example: How to mirror files from a remote ftp server (get files) First, you need to connect to the remote ftp server using the following syntax:

Ich würde das gerne ohne Interaktion in einem Befehl machen.

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

Am Ubuntu-PC, nicht am Server:

:~/test$ lftp -e "mirror /hdd/aufnahmen /home/ab/test/dvbrecords/ -e; exit" -u root, 192.168.178.143
Neu: 1 Datei, 0 Verknüpfungen                                                            
2163449856 Bytes übertragen in 38 Sekunden (54.69 MiB/s)

Das spiegelt also von der DVB-Box zum Linux-PC.

Ich denke, ich habe es grundsätzlich geschafft. Jetzt stellt sich nur mehr die Frage wie nur die ts-Dateien gespiegelt werden und nur die oberste Ebene, also keine Verzeichnisse darunter auf der DVB-Box.

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

Aus der Manpage https://lftp.yar.ru/lftp-man.html

-I GP,   --include-glob=GP          include matching files

Ich teste gerade und hole mir das ganze Verzeichnis und kann daher nicht weiter testen. Mir ist noch nicht klar wie das aussehen müsste

So ein Mitschnitt besteht immer aus mehreren Files:

20180409 0838 - arte HD - Südtirol.eit
20180409 0838 - arte HD - Südtirol.ts
20180409 0838 - arte HD - Südtirol.ts.ap
20180409 0838 - arte HD - Südtirol.ts.cuts
20180409 0838 - arte HD - Südtirol.ts.meta
20180409 0838 - arte HD - Südtirol.ts.sc

Interessant ist nur die ts Datei, und nicht ts.*

Ob man da noch

-X GP,   --exclude-glob=GP          exclude matching files

auch braucht?

Noch wichtiger ist, dass Verzeichnisse darunter nicht gespiegelt werden, da gibt es aber nur mkv-Dateien, also müsste es reichen, wenn ich die Syntax herausfinde, die nur ts-Dateien verwendet.

Vielleicht kann es irgendwo so funktionieren, kann zur Zeit nicht testen:

mirror --exclude '*.eit' --exclude '*.ts.*' --include '*.ts"

Zuerst alles ausschliessen und dann dann das was benötigt wird.

PS: Mittlerweile ist der Transfer nur mehr ca. die Hälfte, ca. 20-25M/s. Alles läuft über Ethernet-Kabel, da ist also kein launisches WLAN dabei.

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

Ich habe den vorigen Test abgebrochen und vielleicht schon ein nicht ganz perfekte, aber brauchbare Lösung gefunden: Neues Testszenario mit anderen Ordnern:

So passt es nicht

lftp -e "mirror -c --exclude-glob *.mkv --exclude-glob *.mp4 --exclude-glob *.eit --exclude-glob *.ts.ap --exclude-glob *.ts.cuts --exclude-glob *.ts.meta --exclude-glob *.ts.sc --include-glob *.ts /hdd/movie/ /dvb/wz/ -e; exit" -u root, 192.168.178.143

Ich verstehe das aber nicht warum. Alle eit, ts.ap etc-Dateien werden kopiert, obwohl ausgeschlossen

So funktioniert es leider auch nicht, da sind auch eit-Dateien dabei

lftp -e "mirror -c --include \.ts$ /hdd/movie/ /dvb/wz/ -e; exit" -u root, 192.168.178.143

\.ts$ sollte doch nur Dateien inkludieren, die am Ende .ts haben, oder?

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

lftp -e "mirror --include \.ts$ /hdd/movie/ /dvb/sz0/ -e; exit" -u root, 192.168.178.148

SO funktioniert es mit einer anderen DVB-Box. Da ist aber IMHO in der Syntax kein Unterschied zu davor, das -c hatte ich auch schon davor weggelassen, da ich denke, dass es keinen Sinn macht. Kann da irgendein Cache daran Schuld sein?

Bleibt also die Frage wie ich darunter liegende Verzeichnisse bei der Quelle ignoriere.

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

Habe nun ftpsync entdeckt. Noch nicht probiert, aber vielleicht ist das leichter zu konfigurieren.

http://manpages.ubuntu.com/manpages/bionic/man5/ftpsync.conf.5.html EXCLUDE If you do want to exclude files from the mirror run, put --exclude statements here. See rsync(1) for the exact syntax, these are passed to rsync as written here.

Wie nun, die Filter laufen über rsync und nicht ftp?

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3771

Zur Info:

Es geht mit mit rsync nun ähnlich wie mit lftp. Wurde eine Datei bereits mit rsync ohne Filter gesynct und gibt man danach einen Filter an, so ist der Filter für bereits gesyncte Dateien wirkungslos, aber für ungesyncte Dateien wird der Filter angewendet. Also wenn man zB auf der DVB-Box ein rsync installiert und dann von der internen SATA-HD auf die externe USB-HD (ext4) synct, dann scheint das so zu funktionieren:

time rsync -ruvL --include='*.ts' --exclude='*' --stats --delete --chmod=u=rwX /media/hdd/movie/ /media/usb/movie/

Ob vielleicht --exclude='*' auch bei lftp die darunter liegenden Ordner ignoriert, habe ich noch nicht ausprobiert.

Antworten |