тьфу, я потратил слишком много времени на поиск ответа, прежде чем отправлять этот вопрос, и теперь я нахожу --reverse
возможность делать encfs
то, что я хочу. вот мой резервный скрипт:
#!/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/
и восстановить файл:
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