PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FTP-Spiegelung mit wget



blubbersuelze
18.02.09, 09:05
Hallo,

ich habe 2 Linuxserver welche mittels ftp Dateien synchronisieren.

Auf dem einen Server werden die Daten zur Verfügung gestellt.
Der andere Server zieht mittels wget von einem ftp-Account die zu synchronisierenden Daten.

aufgebaut ist es mit diesen Optionen:
--continue
--tries=99
--waitretry=10
--timestamping
--limit-rate=50k
--directory-prefix=/Sync
--mirror ftp://<syncaccount>:<syncaccountpassword>@server

leider bleiben die Dateien nach dem Sync auf dem zu spiegelnden Server. Hat jemand eine Idee was ich machen oder alternativ verwenden kann, das die synchronisierten Dateien auf dem Server gelöscht werden sobald sie synchronisiert wurden?

am coolsten wäre ein wget mit einer "move"-Option oder so

Die folgenden Parameter brauche ich, da beide Linuxserver über DSL ans Internet angebunden sind und der Sync darüber läuft

--continue
--limit-rate=50k
--directory-prefix=/Sync
--mirror ftp://<syncaccount>:<syncaccountpassword>@server


Danke für Ideen und Vorschläge im vorraus

mfg.
blubbersuelze :p

marce
18.02.09, 09:12
am einfachsten wäre vermutlich, auf rsync umzustellen anstatt ftp.

Alternativen mit ftp:
- unison soll es wohl können
- evtl. über ftpfs mounten und dann "lokal" rsync

blubbersuelze
18.02.09, 21:31
mmh bei unison finde ich keine funktion die sagt,

wenn datei x fertig kopiert wurde vom ftp-server zum ftp-client dann lösche sie auf dem ftp-server


weil das ist das ziel der ganzen aktion das ich sozusagen die komplette ordnerstruktur verschiebe und wenn neue dateien/Ordner dazu gekommen sind er diese auf vom ftp-server zum client verschiebt, die aber noch auf dem Client vorhandenen Ordner und Dateien nicht löscht

marce
18.02.09, 21:40
alternativ schau Dir mal lftp an - das kennt neben mirror auch beim mget die Option -E

Sam Fisher
20.02.09, 18:39
Hallo !
Ich mache so was ähnliches, aber ich habe es so wie marce schon anmerkte mit RSYNC und Public-Keys gemacht. Da gibt es die Option nach dem Übertragen löschen. Aalternativ könntest du auch nach dem syncen eine Fileliste erstellen dann all diese Files löschen. (per BASH-Script, ist zwar etwas tricky, aber es funktioniert :rolleyes: )

Viele Grüße
Sam

blubbersuelze
21.02.09, 11:49
@Sam Fisher
klingt interessant :-)

wärest du so nett mir das Script zu schicken?
würde mich voll freuen :-)

thx im vorraus

mfg. blubbersuelze :p

Painkiller
21.02.09, 14:19
rsync -av --delete --partial --progress $QUELLE $BACKUP

Ist ganz einfach.

Sam Fisher
21.02.09, 15:15
Hallo !
Ich habe es nach dieser Anleitung hier gemacht: http://wiki.linuxeinsteiger.net/index.php/Rsync_%C3%BCber_ssh_tunneln
Oder meinst du die Methode mit den löschen der Files per File-Liste?
Viele Grüße
Sam

blubbersuelze
22.02.09, 13:28
rsync -av --delete --partial --progress $QUELLE $BACKUP

klingt anz nett.. aber:
1. wie erzähl ich rsync das nur X kB/s nutzen soll?
2. "--delete delete extraneous files from dest dirs"

ist doch etwas sinnfrei die Files auf der Destiantion zu löschen .. ich will doch das die Files auf der Source gelöscht werden nachdem sie zur Destination kopiert wurden ... also ein "move"
oder habe ich da gerade was falsch verstanden *G*

Aqualung
22.02.09, 13:46
rsync -av --delete --partial --progress $QUELLE $BACKUP

klingt anz nett.. aber:
1. wie erzähl ich rsync das nur X kB/s nutzen soll?


--bwlimit=KBPS limit I/O bandwidth; KBytes per second

Sam Fisher
22.02.09, 14:21
Hallo !

ist doch etwas sinnfrei die Files auf der Destiantion zu löschen .. ich will doch das die Files auf der Source gelöscht werden nachdem sie zur Destination kopiert wurden ... also ein "move"
oder habe ich da gerade was falsch verstanden *G*
In deinem Fall ist es vielleicht wirklich etwas "sinnfrei". Aber wenn ich RSYNC verwende, dann immer um einen Ordner (Dateiserver) auf die Sicherungslaufwerke zu übertragen und wenn auf dem Dateiserver ein File gelöscht wurde, soll es auch auf der Sicherung verschwinden. Da ist --delete dann sinnvoll. Wenn ich dich richtig verstanden habe, willst du dass von der Quelle alles auf das Ziel übertragen wird und dann die Quelle wieder leer ist. Stimmt das soweit? Wenn ja, dann schreibe dir einfach ein kleines Script, dass du per CRON einmal täglich startest:


#!/bin/bash
# Dieses Script sichert alle Files per RSYNC über SSH und
# löscht dann die Quelle leer.

rsync -e 'ssh -i /home/Tux/.ssh/StartComputer-ZielServer.rsync' -avz --bwlimit=1000 /home/Tux/ ZielServer:/home/Tux/Tuxbackup/
rm -R /home/tux/*
echo "Dateien übertragen und Quell-Verzeichnis geleehrt"

exit 0
Viele Grüße
Sam