staging.inyokaproject.org

Unison

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Unison.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

klingt IMHO plausibel. Sollen wir dir den Artikel in die Baustelle schieben?

Gruß, noisefloor

MPW

Anmeldungsdatum:
4. Januar 2009

Beiträge: 3731

Ich hab nie den Sinn der Baustelle verstanden, denn für mich entwickeln sich Wikis kontinuierlich weiter. Ich hab mir Mal erlaubt das jetzt einfach so reinzuschreiben.

Bitte Mal überlesen und die sicherlich noch vorhandenen Grammatik- und Rechtschreibfehler entfernen.

Ggfs. kann man den Anfang des Artikels noch kürzen. „Aktenkoffer“ gab es mal in Windows 98. Heute sind USB-Sticks so schnell, dass sich das Runterkopieren nicht lohnt. Ich denke man könnte einfach knapp die Funktionalität zwei Dateistrukturen zu synchronisieren, erklären und dann direkt in meinen 6-Schritte-Plan überleiten.

Ich weiß ja nicht, wie es bei euch ist, aber ich nutze Unison ausschließlich um zwischen Rechnern zu synchronisieren, nicht innerhalb eines Rechners.

Diese Skripte Zenity und Sucsynct sind mir etwas suspekt. Von mir aus kann das auch raus, wollte es aber nicht einfach entfernen, aber vllt. ist nicht jeder so ein Kommandozeilenliebhaber wie ich.

Grüße MPW

/edit: Kann man die Aufzählung noch schöner formatieren? Mir ist nichts schöneres eingefallen.

Und, kann man die Optionen auto/batch/logfile etc. noch etwas einrücken? Hab es mit Leerzeichen versucht, die werden aber verschluckt.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Danke für die Ergänzung. Habe ein paar Kleinigkeiten korrigiert.

MPW schrieb:

Ich hab nie den Sinn der Baustelle verstanden, denn für mich entwickeln sich Wikis kontinuierlich weiter. Ich hab mir Mal erlaubt das jetzt einfach so reinzuschreiben.

Und genau _darum_ gibt's die Baustelle. Damit a) die Wikiartikel inhaltlich immmer in sich konsistent und richtig sind und b) mein Ergänzungen (aka Weiterentwicklungen) etc. machen kann, ohne unter Zeitdruck zu stehen und "one shot" alles richtig machen zu müssen. ☺

Gruß, noisefloor

MPW

Anmeldungsdatum:
4. Januar 2009

Beiträge: 3731

Danke für's Kontrolle lesen. Über die Baustelle diskutieren wir mal ein anderes Mal, ihr habt da mehr Erfahrung 😀.

Würdest du noch die Einleitung kürzen oder diese Skripte entfernen, oder wollen wir es einfach erstmal so belassen?

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

MPW schrieb:

Würdest du noch die Einleitung kürzen

Meinst du die Einleitung des Artikels an sich? Die ist doch kurz...

oder diese Skripte entfernen,

Nee, weil: solange diese korrekt sind, kein Sicherheitsrisiko darstellen etc. gibt es keinen Grund, diese zu entfernen.

Gruß, noisefloor

MPW

Anmeldungsdatum:
4. Januar 2009

Beiträge: 3731

Gut, dann lassen wir das so. Und das nächste Mal halte ich mich auch an die Baustellenpolitik 😀.

MoonKid

Anmeldungsdatum:
9. Februar 2012

Beiträge: 1379

Klingt für mich als unison-User ganz gut. Punkt 5 würde ich aber rauslassen.

Die Automation ist kein Element mit direktem Bezug zu Unison. Sonst könnte man ja zu jedem Anwendungs-Artikel auch einen Automationsabschnitt schreiben. Wer etwas automatisiert, sollte immer auf Mehrfachaufrufe a.G. zu lange Laufzeiten des vorherigen Aufrufs checken. Das versteht sich von selbst.

Das besagte Feauter, was du in Punkt 5 beschreibst wird auch gerade unter den Devs diskutiert, ob und wie das in Unison zu integrieren ist.

MPW

Anmeldungsdatum:
4. Januar 2009

Beiträge: 3731

Dem stimme ich nicht zu. Es ist gerade wichtig auf die Eigenheiten bzgl. Automatisierung und Unison hinzuweisen. Es nutzt einem hier nichts, wenn man weiß, wie Cron funktioniert, aber nicht weiß, dass Unison nicht merkt, dass es in zweiter Instanz aufgerufen wurde.

MoonKid

Anmeldungsdatum:
9. Februar 2012

Beiträge: 1379

MPW schrieb:

Dem stimme ich nicht zu. Es ist gerade wichtig auf die Eigenheiten bzgl. Automatisierung und Unison hinzuweisen. Es nutzt einem hier nichts, wenn man weiß, wie Cron funktioniert, aber nicht weiß, dass Unison nicht merkt, dass es in zweiter Instanz aufgerufen wurde.

Ich kann deine Perspektive schon nachvollziehen. Aber 1. ist das eben gerade keine "Eigenheit" von Unison, da die Automatisierung kein Feauter von Unsion ist. Und 2. checken die meisten Anwendungen nicht, ob sie ne zweite Instanz laufen haben. Ist auch meist unnötig. Es gibt durchaus Gründe, mehrere Instanzen laufen zu haben.

Grundsätzlich würde ich es begrüßen, wenn Unison mehr Support für Automatisierungsmechanismen mitbringen würde. Aber solange das dort nicht drin ist, hat es IMO im Wiki-Artikel nix zu suchen. Hinweise auf Sekundärquellen, die solche Spezialszenarios in Form von Tutorials bspw. erklären fände ich aber ok.

Hier im Wiki werden IMO zu viele Spezialszenarios für die einzelnen Anwendungen (oft nicht ausreichend!) erläutert, mit irgendwelchen dubiosen Scripten usw. Das überfrachtet die Artikel oft unnötig.

MPW

Anmeldungsdatum:
4. Januar 2009

Beiträge: 3731

MoonKid schrieb:

Und 2. checken die meisten Anwendungen nicht, ob sie ne zweite Instanz laufen haben. Ist auch meist unnötig. Es gibt durchaus Gründe, mehrere Instanzen laufen zu haben.

Zwei Mal Libreoffice führt auch nicht zum Datenverlust. Zwei Mal Unison überschreibt gerne mal Dateien. Kleiner Unterschied.

Ich hab bei der Unison-Mailingliste angefragt so ein Lockfile einzubauen. Sie sind dafür, aber keiner hat Lust es zu programmieren und ich kann es nicht. Daher wird es wohl so bleiben.

MoonKid schrieb:

Hier im Wiki werden IMO zu viele Spezialszenarios für die einzelnen Anwendungen (oft nicht ausreichend!) erläutert, mit irgendwelchen dubiosen Scripten usw. Das überfrachtet die Artikel oft unnötig.

Unser Ubuntu Wiki hier ist ja wohl das Beste, was es im Netz gibt. Lediglich einige Arch-Wikis sind noch besser, aber dann auch noch technischer. Ich kenne kein englisches Ubuntu Wiki, dass nur annähernd an die Qualität von diesem hier rankommt.

MoonKid

Anmeldungsdatum:
9. Februar 2012

Beiträge: 1379

MPW> Unser Ubuntu Wiki hier ist ja wohl das Beste, was es im Netz gibt.

Korrekt! Und möchte, dass das so bleibt. 😉

Baus halt rein. Aber bitte deutlich vom eigentlichen Unison abgrenzen - sozusagen eine Extension.

Bei vieleln Artikeln mit irgendwelchen Workarounds, Skripten, etc fällt mir immer auf, dass die Existenzberechtigung des entsprechenden Abschnitts nicht ausreichend dargelegt wird und auch das Script (sofern vorhanden) nicht erklärt, sondern einfach nur ingeklatscht wird. Für Unison würde das ganz simpel bedeuten: Der Abschnitt kommt ganz nach hinten und bitte erklären, dass für Automation zusätzliche Software (z.B. cron) erforderlich ist und zu welchen Problem(!) es eben bei bestimmten Szenarien (große Files) kommen kann und das man darum diese "Extension" braucht.

btw: Ich hab den merkwürdigen bash-Aufruf nämlich nicht verstanden. Du sollst ja auch nich die bash-Syntax im Detail erläutern, aber wenigstens sinngemäß erklären, was das in etwa macht.

MPW

Anmeldungsdatum:
4. Januar 2009

Beiträge: 3731

Es wird ja erklärt, dass es ein Lockfile ist, und wenn du noch einen Satz einfügen möchtest, nur zu.

Es steht deutlich in der Überschrift, dass es in dem Abschnitt um Automatisierung geht.

Und ich habe allein im letzten halben Jahr ein paar Mal genau diesen Ablauf zur Automatisierung von Unison erklärt. Du brauchst es vllt. nicht, aber andere scheinbar schon.

Minfredo

Avatar von Minfredo

Anmeldungsdatum:
1. Juni 2017

Beiträge: 17

Hallo,

es tut mir leid diesen alten Artikel wieder auszugraben, aber mir ist ein Punkt unklar: Unter Schritt 5 (Automatisierung) wird empfohlen ein crontab-Eintrag vorzunehmen, bei welchem zunächst geprüft wird, ob bereits ein "Lock"-File besteht.

Im zweiten Listing des Abschnittes wird ein Bashskript vorgeschlagen, um trotz laufender Synchronisation eine weitere anstoßen zu können. Diese prüft allerdings auf die gleiche Weise das Vorhandensein des "Lock"-Files, wodurch ja dann ebenfalls der zusätzliche Sync nicht angestoßen wird, was aber im Text suggeriert wird!?

Ist Listing falsch oder verstehe ich den Text falsch?

Mfg Minfredo

Vej Team-Icon

Moderator, Supporter
Avatar von Vej

Anmeldungsdatum:
7. März 2013

Beiträge: 3401

Hallo!

Minfredo schrieb:

Im zweiten Listing des Abschnittes wird ein Bashskript vorgeschlagen, um trotz laufender Synchronisation eine weitere anstoßen zu können. Diese prüft allerdings auf die gleiche Weise das Vorhandensein des "Lock"-Files, wodurch ja dann ebenfalls der zusätzliche Sync nicht angestoßen wird, was aber im Text suggeriert wird!?

Das sehe ich genauso und habe diesen Abschnitt daher jetzt entfernt.

Viele Grüße

Vej

hirntot

Anmeldungsdatum:
9. August 2009

Beiträge: 198

hi leute,

Aufgrund des Mangels an guten automatisierten Backup-Tools, die inkrementelles Backup verwenden wie Unison es tut und einfach mit siplen lokalen Backups umgehen können, habe ich mich entschieden, Unison zu nutzen und es mit einem Bash-Skript zu kombinieren, das beim Booten gestartet wird. Ich bin mir nicht sicher, ob es anderen Benutzern hilft, aber ich wollte es trotzdem teilen. Was haltet ihr davon, kann/soll das irgendwo gepostet werden?

in meinem Fall nutze ich das tool schon seit jahren, habe es immer weiter verfeinert und der aktuelle Stand sieht so aus. Ich nutze eine USB-HD, die an meiner Docking station hängt, oder zumindest daneben liegt.

Mein Skript hat folgende Funktionen:

  • Initialisierungsparameter: Legt verschiedene Konfigurationsparameter fest, wie Startverzögerung, Netzwerkeinstellungen, Wartezeit zwischen Backup-Versuchen, Intervall zwischen Backups, Verzeichnisse für NAS- und USB-Backups und andere Variablen.

  • Initialisierungsbenachrichtigung: Sendet eine Benachrichtigung, die darauf hinweist, dass der Backup-Prozess gestartet wurde.

  • Hauptschleife: Das Skript tritt in eine Endlosschleife ein, in der es überprüft, ob der Backup-Prozess erfolgreich ist oder nicht. Es führt kontinuierlich Backup-Operationen durch, bis sie erfolgreich sind.

  • NAS-Backup: Überprüft das Vorhandensein des NAS-Verzeichnisses und startet einen Backup-Prozess, falls es gefunden wird. Sendet entsprechende Benachrichtigungen und protokolliert den Backup-Prozess.

  • USB-Backup: Überprüft das Vorhandensein des USB-Verzeichnisses und startet einen Backup-Prozess, falls es gefunden wird. Sendet entsprechende Benachrichtigungen und protokolliert den Backup-Prozess.

  • Fehlerbehandlung: Wenn der Backup-Prozess fehlschlägt, wartet das Skript für eine bestimmte Dauer und überprüft dann die Zeit des letzten erfolgreichen Backups. Wenn diese die maximale erlaubte Backup-Intervall überschreitet, wird eine Erinnerungs-/Fehlerbenachrichtigung ausgelöst. Der Erinnerungszähler stellt sicher, dass die Erinnerungsbenachrichtigungen in festgelegten Intervallen gesendet werden.

  • Planung des nächsten Backups: Wenn ein Backup erfolgreich ist, plant es die Zeit für das nächste Backup basierend auf dem konfigurierten Intervall.

  • Behandlung von Leerlaufzeiten: Wenn kein Backup geplant ist, wartet das Skript bis zur nächsten Backup-Zeit basierend auf dem konfigurierten Intervall.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash

#allgemeine Einstellungen:
Startverzoegerung=1                   # (in Sekunden)
Wartezeit=10                          # gibt die Anzahl Minuten wieder, die das Programm abwartet bis es erneut versucht, kontakt mit NAS/USB aufzubauen.
Naechstes_Backup=24                   # gibt die Anzahl Stunden wieder, die zwischen zwei Backups liegen
Backup_Reminder=14                    # die maximale Anzahl Tage zwischen den Backups, bis das Programm auf fehlende Backups hinweist.
reminder_timeout=60 # die Anzahl Minuten, die mindestens zwischen mehreren Remindern liegt.
Sync_log="/home/user/.unison/USB-sync.log" # hier wird der Pfad zur Log-Datei angegeben.

# USB_HD-Einstellungen:               # hier kann der Pfad zur USB_HD eingetragen werden, um eine externe Festplatte oder einen USB-Stick für das Backup zu nutzen.

DIR_USB="/media/user/pfad_zum_Ordner"
USB_Sync_prf="sync_HD"                # hier wird der Name des Unsion-profils eingegeben, das zuvor in Unsion separat erstellt wurde.


#NAS-Einstellungen:                   # die NAS-Option prüft, ob man sich im eigenen Wlan-Netzwerk befindet, bevor Unison ein Backup macht.
DIR_NAS="/Fritz.NAS/pfad_zum_Ordner/" #falls die NAS-Partition als Festplatte eingebunden ist, kann hier der Pfad zum Backup-Ordner eingegeben werden.

NAS_Sync_prf="sync_NAS"               # hier wird der Name des Unsion-profils eingegeben, das zuvor in Unsion separat erstellt wurde.

# Start des programms und interne Parameter:
FreshBoot=1
Backup_success=0
reminder_schwelle=$(($reminder_timeout / $Wartezeit))
reminder_counter=$reminder_schwelle

sleep $Startverzoegerung
/usr/bin/notify-send -i info -t 30000 Unison "SimpleBackup gestartet."

while true 
do 
if [ $Backup_success = 0 ]
then

# NAS-Backup
echo "checking for $DIR_NAS"
if [ -d "$DIR_NAS" ]
then
echo "found NAS"
/usr/bin/notify-send -i info -t 30000 Unison "Backup auf Frit.NAS gestartet."
echo "$(date +"%Y-%m-%d %H:%M") starting SUCCESS: sync to NAS" >> $Sync_log
unison -auto -batch $NAS_Sync_prf
echo "backup done"
echo "$(date +"%Y-%m-%d %H:%M") SUCCESS: sync to NAS is done" >> $Sync_log
/usr/bin/notify-send -i info -t 30000 Unison "Backup auf Frit.NAS beendet."
/usr/bin/notify-send -i info -t 30000 Unison "Backup beendet."

Backup_success=1
Next_Backup=$(($(date +%s) + (Naechstes_Backup*3600)))

else
echo "didn't find NAS"
if [ $FreshBoot = 1 ]
then
/usr/bin/notify-send -i info -t 30000 Unison "NAS-Partition nicht gemountet oder keine Verbindung möglich."
fi
fi

# USB-Backup
echo "checking for $DIR_USB"
if [ -d "$DIR_USB" ]
then
echo "found USB"
/usr/bin/notify-send -i info -t 30000 Unison "Backup auf USB-HD gestartet."
echo "$(date +"%Y-%m-%d %H:%M") starting SUCCESS: sync to USB-HD" >> $Sync_log
unison -auto -batch $USB_Sync_prf
echo "backup done"
echo "$(date +"%Y-%m-%d %H:%M") SUCCESS: sync to USB-HD is done" >> $Sync_log
/usr/bin/notify-send -i info -t 30000 Unison "Backup auf USB-HD beendet."
/usr/bin/notify-send -i info -t 30000 Unison "Backup beendet."

Backup_success=1
Next_Backup=$(($(date +%s) + (Naechstes_Backup*3600)))

else
echo "didn't find USB-HD"
if [ $FreshBoot = 1 ]
then
echo "FreshBoot = 1"
/usr/bin/notify-send -i info -t 30000 Unison "USB-Partition nicht gemountet oder keine Verbindung möglich."
fi
fi

FreshBoot=0
if [ $Backup_success = 0 ]
then
    echo "Backup_success = 0"
    
    sleep $(($Wartezeit * 60))

    ##überprüfe, ob das letzte Backup schon länger her ist, ast als $Backup_Reminder
    
    MAX_INAKTIVITAET=$((86400 * Backup_Reminder))
    last_success_timestamp=$(grep "SUCCESS" $Sync_log | awk '{print $1, $2}' | tail -n 1)
    
    echo "Last successful backup timestamp: $last_success_timestamp"
    
    last_success_unixtime=$(date -d "$last_success_timestamp" +%s)
    current_unixtime=$(date +%s)

    if [ $((current_unixtime - last_success_unixtime)) -gt $MAX_INAKTIVITAET ]; then
       # Überprüfen, ob der Reminder-Zähler den Schwellenwert überschreitet
       if [ $reminder_counter -lt $reminder_schwelle ]; then
           /usr/bin/zenity --error --title="Backup-Fehler" --text="Das Backup war seit mehr als zwei Wochen nicht erfolgreich." --ok-label="OK"
           reminder_counter=0 # Zurücksetzen des Zählers
       else
           reminder_counter=$((reminder_counter + 1))
       fi
    fi
    
fi

else        

#warteraum: hier wird das programm sich aufhalten, wenn es bereits ein Backup gemacht hat.

if [ $(date +%s) -ge $Next_Backup ]
    then
    Backup_success=0
    echo "set Backup_success to 0"
else
    next_backup_message="$(date +"%Y-%m-%d %H:%M") next backup planned after $(date -d @$Next_Backup +"%Y-%m-%d %H:%M")"
    echo "$next_backup_message"
    if tail -n 1 $Sync_log | grep -q "next backup planned after"; then
        sed -i '$s/.*/'"$next_backup_message"'/' $Sync_log
    else
        echo "$next_backup_message" >> $Sync_log
    fi
    
    echo "going to sleep"
    sleep $(($Wartezeit * 60))
fi

fi

done
Antworten |