Posts Tagged ‘tarsnap’

Sonntag, 27. September 2020

Nicht-leere Amazon AWS Glacier Vaults löschen

Ich habe vor einigen Monaten meine Storage-as-a-Service-Optionen konsolidiert: Tarsnap habe ich wegen den horrenden Kosten gekündet und setze nun auf Duplicity mit Backblaze B2. Und da ich gerade dabei war, lasse ich Arq, welches meine Apple Photos (früher: iPhoto Library) sichert, neu auch auf Backblaze sichern (vorher: AWS Glacier).

Um wiederkehrende Kosten zu sparen, wollte ich nun meine AWS Glacier Vaults löschen. Das geht aber nicht über das Amazon GUI, respektive nicht so einfach wie man sich das vorstellt:

Die Lösung ist ein Script, das im Internet herumgeistert. Ich fand es über Deleting Non-empty AWS Glacier Vaults in folgendem Github-Repository: leeroybrun/glacier-vault-remove.

Das schwierigste war, die mit dem Vault verknüpften AWS-Credentials ausfindig zu machen (ich habe offenbar mehrere). Diese musste man in credentials.json speichern …

{
	"AWSAccessKeyId": "...",
	"AWSSecretKey":   "..."
}

… und dann das Script ausführen:

$ python3 removeVault.py eu-west-1 ABCDE_iPhoto_Library

Das ganze liess ich in einer screen-Session auf einem meiner Debian GNU/Linux-Server laufen, denn das Löschen dauerte viele, viele Stunden.

Tags: , , , , , , , ,
Labels: Uncategorized

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