Двойственность: восстановление с пробелами в именах каталогов

Я пытаюсь восстановить файл с помощью сценария оболочки дублирования (duplicity-restore.sh), содержимое которого приведено ниже:

#!/bin/bash
# Export some ENV variables so you don't have to type anything
export AWS_ACCESS_KEY_ID="AWS_KEY"
export AWS_SECRET_ACCESS_KEY="AWS_Secret_key"
export PASSPHRASE="######"

# Your GPG key
GPG_KEY=######

# The destination
DEST="s3://s3.amazonaws.com/<path-to-bucket>"

if [ $# -lt 3 ]; then echo "Usage $0 <date> <file> <restore-to>"; exit; fi

duplicity \
--encrypt-key=${GPG_KEY} \
--sign-key=${GPG_KEY} \
--file-to-restore $2 \
--restore-time $1 \
${DEST} $3

# Reset the ENV variables. Don't need them sitting around
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export PASSPHRASE=

У меня возникают трудности с восстановлением файлов, хранящихся в каталогах с пробелами в именах. Я пробовал следующее:

Без кавычек и экранирующих косых черт:

./duplicity-restore.sh "2018-02-08" dir1/dir2/dir name with spaces/filename.txt /destination/

Выше приводит к ошибке "dir1/dir2/dir не найден в архиве - файлы не восстановлены".

Цитирование всего аргумента пути:

./duplicity-restore.sh "2018-02-08" "dir1/dir2/dir name with spaces/filename.txt" /destination/

Выше приводит к ошибке «Ожидалось 2 аргумента, получено 15»

Цитирование только каталога с пробелами в имени:

./duplicity-restore.sh "2018-02-08" dir1/dir2/'dir name with spaces'/filename.txt

Выше приводит к ошибке «Ожидалось 2 аргумента, получено 15»

Экранируйте косые черты рядом с каждым пробелом в имени каталога:

./duplicity-restore.sh "2018-02-08" dir1/dir2/dir\ name\ with\ spaces/filename.txt /destination/

Выше приводит к ошибке «Ожидалось 2 аргумента, получено 15»

Кажется, что как бы я ни пытался избежать пробелов в именах каталогов, Duplicity рассматривает каждый пробел как отдельный аргумент. Файл, который я пытаюсь восстановить, имеет глубину в несколько каталогов, и ВСЕ каталоги содержат пробелы в своих именах.

Версия Duplicity — 0.7.17, работает на CentOS 7 и выполняет резервное копирование в корзину Amazon S3.


person Chris    schedule 02.08.2018    source источник


Ответы (1)


это ошибка в вашем сценарии оболочки-оболочки, а не в двуличности. если вы хотите, чтобы аргумент рассматривался как один, вам придется снова заключить его в кавычки.

duplicity ... --file-to-restore "$2" ...

..ede/duply.net

person ede    schedule 02.08.2018