Gibt es eine Möglichkeit, ein bereitgestelltes Dateisystem für Off-Site-Backups zu verschlüsseln?

1691
Jayen

Ich möchte eine verschlüsselte Kopie meiner Festplatte effizient sichern. Ich verwende derzeit Rsync zum Sichern einer unverschlüsselten Kopie, und ich finde es ziemlich effizient.

Ich habe mir Duplizität und Rsyncrypto angesehen, aber Duplikate macht inkrementelle Backups und Rsyncrypto verwendet einen eindeutigen Schlüssel für jede verschlüsselte Datei. Duplicity hatte auch keinen Speicher mehr, und ich müsste die rsyncrypto-Schlüssel irgendwo sichern. Ich finde, dass diese Bereiche nicht effizient sind, daher möchte ich sie nicht verwenden.

Ich denke, es würde gut funktionieren, wenn ich den verschlüsselten Mountpoint mit einem Loopback / Bind-Mount / versehen und ein Backup erstellen könnte. Ich habe mir eCryptfs und EncFS angesehen, aber beide scheinen nur verschlüsselte Verzeichnisse zu mounten und erlauben nicht, ein angehängtes Verzeichnis zu verschlüsseln. Beide unterstützen die Verschlüsselung des Dateinamens, was ebenfalls wünschenswert ist.

Wenn ich eine verschlüsselte Version meines Dateisystems haben könnte, würde meine vorhandene rsync-Sicherung effizient funktionieren. Wenn sich sehr wenig geändert hat, müssen nur die Dateinamen verschlüsselt werden.

Gibt es eine Möglichkeit, ein eingehängtes Verzeichnis als ein anderes Verzeichnis zu verschlüsseln? Irgendwelche anderen Vorschläge?

1

1 Antwort auf die Frage

4
Jayen

Pfui, ich verbrachte viel zu viel Zeit für eine Antwort suchen, bevor diese Frage zu veröffentlichen, und ich jetzt die finde --reverseOption encfstut, was ich will. Hier ist mein Backup-Skript:

#!/bin/bash set -e set -u CP="/usr/bin/sudo /usr/bin/rsync -aAhHPxX --delete-excluded --del --ignore-errors --rsync-path=\"rsync --fake-super\" $*" SOURCE='/' MOUNTPOINT='/tmp/slash' DEST='backupuser@backuphost:backupdir'  mkdir -p $MOUNTPOINT mount -t fuse.encfs | grep "^encfs on $MOUNTPOINT type fuse.encfs" || /usr/bin/sudo /usr/bin/encfs --reverse $SOURCE $MOUNTPOINT  #don't cross mount points EXCLUDE_LIST=$(encfsctl encode $SOURCE `/usr/bin/cut -d\ -f 2 /proc/mounts | /bin/grep -v ^$SOURCE$`) EXCLUDE='' for EXCLUDE_ITEM in $ ; do EXCLUDE="$ --exclude $" done  /usr/bin/rsync -haxHAXPR $SOURCE/.encfs* $DEST/../ #eval for the quotes in the CP command eval $CP $EXCLUDE $MOUNTPOINT/ $DEST/ 

und um eine Datei wiederherzustellen:

CP='/usr/bin/sudo /usr/bin/rsync -haxHAXPR --no-implied-dirs --rsync-path="rsync --fake-super"'; SOURCE='/'; DEST='backupuser@backuphost:backupdir'; MOUNTPOINT='/tmp/slash'; ENCRYPTED_NAME=$(encfsctl encode $SOURCE $*); eval $CP $DEST/./$ENCRYPTED_NAME $MOUNTPOINT