Пишу скрипт для бэкапа с помощью rsync, необходимо включать правила для фильтрации. И вот тут поджидает фейл. Если просто ввести в консоли
rsync -av --delete --filter="merge some.filter" source/ destination/
то всё нормально. Если же написать вот такой bash-скрипт, который, казалось бы, делает то же самое, то rsync оказывается недоволен:
#!/bin/bash
RSYNC_PARAMS="-avh --delete"
RSYNC_FILTERS='--filter="merge some.filter"'
echo rsync $RSYNC_PARAMS $RSYNC_FILTERS source/ destination/
rsync $RSYNC_PARAMS $RSYNC_FILTERS source/ destination/
yl3dy bash_test $ ls
destination some.filter source test.sh
yl3dy bash_test $ ls source
7z_old_lappy.tar.bz2 backup.log file1.tmp image.tar.bz2 ref.sh
yl3dy bash_test $ cat some.filter
- *.tmp
yl3dy bash_test $ ./test.sh
rsync -avh --delete --filter="merge some.filter" source/ destination/
Unknown filter rule: `"merge'
rsync error: syntax or usage error (code 1) at exclude.c(904) [client=3.1.0]
Еще пробовал такие варианты для переменной RSYNC_FILTERS:
RSYNC_FILTERS="--filter='merge some.filter'"
RSYNC_FILTERS="--filter=\"merge some.filter\""
Как заставить bash передавать правильный аргумент?
UPD: пропустил знак = в первой команде.