Posts Tagged ‘duplicity’

Mittwoch, 5. Oktober 2022

Das neueste duplicity unter macOS installieren und zum Laufen bringen

Seit einer Woche funktioniert das Backup meines Mac mini auf Backblaze mit duplicity nicht mehr.

Das erste Problem war beim manuellen Aufruf des Backup-Scripts rasch erkannt: Letzte Woche scheint es mit den internen DHCP- und DNS-Servern ein Problem gegeben zu haben, weshalb der Mac mini nicht seinen ordentlichen DNS-Namen erhielt. duplicity verweigerte deshalb das Backup, da es davon ausgehen musste, dass jemand versucht, zwei Systeme auf dieselbe Destination zu sichern. Die Kommandozeilenoption --allow-source-mismatch löste dieses Problem.

Nichtdestotrotz konnte ich das Backup-Script nicht ausführen, weil das Python-Modul duplicity nicht (mehr) gefunden werden konnte. Da hatten wohl die Updates der letzten Tage irgendwas zerschossen.

Auf meinem System habe ich MacPorts installiert und verwende deren Python-Interpreter, um Python-Scripts laufen zu lassen. duplicity habe ich auch als MacPorts-Paket installiert. Doch ich konnte mich erinnern, dass ich nicht dieses duplicity verwende, sondern jeweils den neuesten Quellcode von launchpad.net herunterlade.

Nach viel Pröbeln dann die Lösung (ich ging auf Nummer sicher und installierte Duplicity sowie alle benötigten Python-Pakete für alle drei vorhandenen Python-Versionen):

cd ~/Downloads/duplicity-1.0.1

sudo /opt/local/bin/python3.7 setup.py install --librsync-dir=/opt/local
sudo /opt/local/bin/python3.8 setup.py install --librsync-dir=/opt/local
sudo /opt/local/bin/python3.9 setup.py install --librsync-dir=/opt/local

sudo /opt/local/bin/python3.7 -m pip install -r requirements.txt
sudo /opt/local/bin/python3.8 -m pip install -r requirements.txt
sudo /opt/local/bin/python3.9 -m pip install -r requirements.txt

sudo /opt/local/bin/python3.7 -m pip install b2sdk
sudo /opt/local/bin/python3.8 -m pip install b2sdk
sudo /opt/local/bin/python3.9 -m pip install b2sdk

Tags: , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 9. November 2019

sed unter macOS an Hand von duplicity

Momentan gleise ich gerade die Migration von tarsnap mit Amazon S3 zu duplicity mit Backblaze B2 auf. Hauptgrund: Die verhältnismässig hohen Kosten.

Da MacPorts nur die veraltete duplicity-Version 0.7.17 liefert, welche mit folgender Fehlermeldung den Upload der Backup-Chunks verweigert …

Attempt 1 failed. AttributeError: B2ProgressListener instance has no attribute '__exit__'
Attempt 2 failed. AttributeError: B2ProgressListener instance has no attribute '__exit__'
Attempt 3 failed. AttributeError: B2ProgressListener instance has no attribute '__exit__'
Attempt 4 failed. AttributeError: B2ProgressListener instance has no attribute '__exit__'
Giving up after 5 attempts. AttributeError: B2ProgressListener instance has no attribute '__exit__'

… habe ich mir ein Script geschrieben, welches Version 0.7.19 herunterlädt, kompiliert und in meinem Heimverzeichnis installiert.

Diese Version wiederum hat aber leider das Problem, dass die shebang-Zeile in ~/Library/Python/2.7/bin/duplicity folgendermassen lautet:

#!/usr/bin/env python2
...

Meine MacPorts-Installation kennt kein Executable mit dem Namen python2 und duplicity stirbt deshalb mit folgender Fehlermeldung:

env: python2: No such file or directory

Mein Installationsscript passt das duplicity-Script nun mit sed, dem Stream Editor, an. Da mit macOS das BSD sed mitkommt und nicht das GNU sed, muss man für ein Inline-Replacement folgendermassen vorgehen, damit es klappt:

sed -i "" 's/env python2$/env python2.7/g' /Users/user/Library/Python/2.7/bin/duplicity

Die leeren Quotes nach -i müssen zwingend angegeben werden, ansonsten erscheint die nachfolgende Fehlermeldung (vgl. Sed: ’sed: 1: invalid command code R‘ on Mac OS X).

sed: 1: invalid command code m

Wer mehr über die Unterschiede in den verschiedenen seds erfahren will, liest sich folgenden Artikel durch BSD/macOS Sed vs. GNU Sed vs. the POSIX Sed specification.

Tags: , , , , , , , , ,
Labels: Apple, Linux

Keine Kommentare | neuen Kommentar verfassen