Я пытаюсь написать сценарий резервного копирования, который исключит файлы более определенного размера.
Мой сценарий дает правильную команду, но при запуске внутри сценария выдает ошибку. Однако если та же команда запускается вручную, все работает ... ???
Вот сценарий, основанный на одном, легко найденном с помощью Google
#!/bin/bash
# Export some ENV variables so you don't have to type anything
export AWS_ACCESS_KEY_ID="accesskey"
export AWS_SECRET_ACCESS_KEY="secretaccesskey"
export PASSPHRASE="password"
SOURCE=/home/
DEST=s3+http://s3bucket
GPG_KEY="7743E14E"
# exclude files over 100MB
exclude ()
{
find /home/jason -size +100M \
| while read FILE; do
echo -n " --exclude "
echo -n \'**${FILE##/*/}\' | sed 's/\ /\\ /g' #Replace whitespace with "\ "
done
}
echo "Using Command"
echo "duplicity --encrypt-key=$GPG_KEY --sign-key=$GPG_KEY `exclude` $SOURCE $DEST"
duplicity --encrypt-key=$GPG_KEY --sign-key=$GPG_KEY `exclude` $SOURCE $DEST
# Reset the ENV variables.
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export PASSPHRASE=
Если запустить, я получаю ошибку;
Command line error: Expected 2 args, got 6
Enter 'duplicity --help' for help screen.
Любая помощь, которую вы могли бы предложить, будет принята с благодарностью.
Решил проблему ..
#!/bin/bash
# Export some ENV variables so you don't have to type anything
export AWS_ACCESS_KEY_ID="accesskey"
export AWS_SECRET_ACCESS_KEY="secretaccesskey"
export PASSPHRASE="password"
SOURCE=/home/
DEST=s3+http://s3bucket
GPG_KEY="gpgkey"
# Generate a filelist of excluded files over 100MB
find $SOURCE -size +100M > /tmp/filelist
duplicity --exclude-filelist /tmp/filelist --encrypt-key=$GPG_KEY --sign-key=$GPG_KEY $SOURCE $DEST
# Reset the ENV variables.
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export PASSPHRASE=