Я написал сценарий bash, который будет перебирать каталог / data и выполнять резервное копирование, а затем шифровать все тома, используя двойственность.
Мы обнаружили, что одно из приложений генерирует тонну больших файлов, которые нам не нужно резервировать. поэтому я пытаюсь найти способ исключить этот подкаталог из скрипта
backup_volume() { TARGET_DEVICE=$1
for vol in /data/*; do
VOLUME=$(basename $vol)
echo "Backing up $VOLUME on $TARGET_DEVICE/$VOLUME"
duplicity --file-prefix ${VOLUME}_ --full-if-older 1M /data/$VOLUME $TARGET_DEVICE/$VOLUME --allow-source-mismatch
--encrypt-key "Privbackup" --gpg-options "--batch --pinentry-mode loopback --trust-model always" || ERRORS="$ERRORS $vol>$TARGET_DEVICE"
duplicity --file-prefix ${VOLUME}_ remove-older-than 1M --force --encrypt-key "Privbackup" --gpg-options "--batch --pinentry-mode loopback --trust-model always" $TARGET_DEVICE/$VOLUME || ERRORS="$ERRORS $vol>$TARGET_DEVICE"
done
}
родственник реж .... помогите!
TL; DR: рассмотреть --exclude
опция от duplicity
.
/data/*
расширится до всех нескрытых файлов в /data
, значение его произведет:
/data/file1
/data/file2
/data/dir1
/data/dir2
Это не рекурсивно вызовет, таким образом, это не расширится до:
/data/dir1/file1
/data/dir1/dir2
Можно попробовать printf '%s\n' /data/*
.
Если Вы хотите, чтобы это рекурсивно вызвало, использовать globstar
и **
:
shopt -s globstar
for vol in /data/**; done
[ "$vol" = "/data/dir1/dir2/dir3" ] && continue
...
done
# Unset globstar if you want:
shopt -u globstar
Во всяком случае! Необходимо скорее рассмотреть --exclude
опция от duplicity
.
duplicity --exclude /data/dir1/dir2/dir3