{{tag>linux}} Backup-Programm für Linux Kommandozeile: * Vollbackups * inkrementelle Backups * Automatisches löschen von Backups älter als ein bestimmtes Datum * Löschen von Backups mehr als x Vollbackups * Wiederherstellen einzelner Dateien * Speichern des Backups auf Remote-Systemen * Verschlüsselung des Backups per Passwort oder PGP-Key Syntax: duplicity //Befehl// //Optionen// //Quelle// //Ziel// * Befehl: Aktion die duplicity auführen soll (full -> Voll-Backup, incrementel -> inkrementelles Backup usw.) * Optionen: Optionen * Quelle: Lokales Verzeichnis/Datei die gesichert werden soll * Ziel: Ziel für das Backup (Aufbau: //Protokoll//:%%//%%//Pfad//) Befehle: ^Befehl ^Beschreibung ^ | | Ohne Angabe eines Befehls wird standardmäßig ein Fullbackup gemacht wenn von der Quelle bisher keines vorhanden ist. \\ Ist ein solches bereits vorhanden wird ein inkrementelles Backupo erstellt| |remove-older-than |Löscht alle Vollbackups und die dazugehörigen inkrementellen Backups wenn das letzte inkrementelle Backup älter als die Zeitangabe ist. \\ \\ Es muss die Option --force angegeben werden damit es funktioniert (sonst löscht duplicity nicht)| |remove-all-but-n-full |Löscht alle Backups bis auf die letzten "n" Vollbackups (und deren inkrementelle Backups). \\ \\ Es muss die Option --force angegeben werden damit es funktioniert (sonst löscht duplicity nicht)| Optionen: ^Option ^Beschreibung ^ |--force|Muss angegeben wenn Dateien (Backup-Dateien) gelöscht werden sollen| |--full-if-older-than |Zusammen mit gar keinem Befehl oder "incrementel" erstellt es ein Vollbackup wenn das letzte Vollbackup älter als ist, statt ein weiteres inkrementelles Backup zu erstellen| |--no-encryption|Standardmäßig will duplicity Backups verschlüsseln. Mit dieser Option lässt sich das deaktivieren| Ziel: ^Ziel ^Beschreibung ^ |file:%%//%%| Um die Backupdatei lokal irgendwo abzulegen \\ \\ Beispiel: duplicity /home/test file:%%///%%media/backup/ | |scp:%%//%%|Kopieren des Backups per scp auf einen anderen Rechner. \\ Es werden temporär komprimierte Archive auf dem lokalen Rechner (26 MB in /tmp/) erstellt, die dann transferiert werden -> danach wird die nächste Datei erstellt.\\ \\ Beispiel: duplicity /home/test scp:%%//%%backupuser@backupserver//media/backup/ \\ \\ **Hinweis:** Muss das Password per Hand angegeben werden (es sind keine Schlüssel zwischen dem Quellsystem und Zielsystem ausgetauscht), muss zusätzlich "-ssh-askpass" angeben werden, sonst fragt es nicht nach dem Passwort. \\ **Achtung**: Standardmäßig wird nicht scp verwendet, sondern sftp! \\ Um scp zu nutzen muss zusätzlich: --use-scp angegeben werden \\ Achtung: user@host/pfad ist relativ zum Home-Verzeichnis des Benutzers -> /home/user/pfad. Um absolut anzugeben (von / ausgehend) müssen nach dem Host zwei / stehen -> user@host%%//%% | ====== Troubleshooting ====== ^Problem ^Lösung ^ |Bei der Verwendung von scp kommt: \\ ssh: Exception: Incompatible ssh peer (no acceptable kex algorithm) ssh: Traceback (most recent call last): ssh: File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 1585, in run ssh: self._handler_table[ptype](self, m) ssh: File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 1664, in _negotiate_keys ssh: self._parse_kex_init(m) ssh: File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 1779, in _parse_kex_init ssh: raise SSHException('Incompatible ssh peer (no acceptable kex algorithm)')|Duplicity benutzt das "SSH paramiko backend", welches in einer Version ein Problem mit einer bestimmten Version von OpenSSH als Gegenstelle hatte. \\ \\ Modul muss upgedatet werden: \\ pip install paramiko --upgrade \\ Mehr Informationen zum Update hier: http://www.randomhacks.co.uk/paramiko-sshexception-incompatible-ssh-peer-no-acceptable-kex-algorithm-ubuntu-14-04/ \\ \\ **Alternativ:** \\ "SSH pexpect backend" benutzen -> macht das gleiche, nur nutzt es direkt den ssh-Kommandozeilen-Client (ist ein Wrapper), während Paramiko eigens in Python geschrieben wurde (das gesamte Protokoll, es benötigt keine anderen Programme). \\ Um zu wechseln muss folgende Option verwendet werden: \\ Syntax: --ssh-backend pexpect| |sftp put of /tmp/duplicity-9e5jgK-tempdir/mktemp-1b9LZY-69 (as duplicity-full.20150221T211959Z.vol68.difftar.gpg) failed: Failure (Try 1 of 5) Will retry in 10 seconds. BackendException: Giving up trying to upload 'duplicity-full.20150221T211959Z.vol68.difftar.gpg' after 5 attempts| Es ist nicht möglich die Backup-Datei auf das Zielsystem zu transferieren - das Problem liegt auf dem Zielsystem. \\ \\ Es gibt vermutlich mehrere Gründe. \\ \\ Mögliche Gründe: \\ * Zieldateisystem voll |