我正在尝试使用双重包装脚本(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存储桶。
答案 0 :(得分:2)
那是包装外壳脚本中的错误,而不是重复。如果您希望将一个论点保留为一个论点,则必须用引号将其重新包装。
duplicity ... --file-to-restore "$2" ...
.. ede / duply.net