Как обработать эти переменные в rsync, исключают файл?

Моя ставка - то, что где-нибудь существует a sh сценарий с двойным знаком "равно" (" == ") в a test команда вместо единственной (" = "). Встроенный Bash test позволяет == или =, но Оболочка Bourne (по крайней мере, dash на Ubuntu), только позволяет =. Кроме того, мой /usr/bin/test только позволяет равный сингл. Но посмотрите нижнюю часть этого ответа для других примеров, которые производят эту ту же ошибку.

Я заглянул бы logrotate.conf и посмотрите, имеет ли это строку 91, который мог бы иметь ту проблему.

Если по некоторым причинам Вы хотите воссоздать сообщение об ошибке для тестирования:

Создайте файл, давайте назовем его "a" со следующим содержанием:

echo 'In script "a"'
f="/etc/hosts.deny"
test $f == "foo"

Теперь сделайте:

sh a

Необходимо добраться:

In script "a"
test: 3: /etc/hosts.deny: unexpected operator

Можно также воспроизвести подобную ошибку с помощью любого следующего:

sh -c "test /etc/hosts.deny +"
sh -c "test /etc/hosts.deny -"
sh -c "test /etc/hosts.deny /"
sh -c "test /etc/hosts.deny *"

Править: Попробуйте следующее для сужения поиска:

$ su -
$ find /etc -type f | xargs awk 'FNR==91 && /test/ {print FILENAME, $0}'

Вы будете su для укоренения затем работайте find/awk команда. Это покажет Вам имена файлов и строку 91 из файла, если слово "тест" появится на той строке для каждого файла под /etc. Затем можно искать операторы, которые являются неправильными.

0
задан 27 October 2010 в 01:40
1 ответ

man rsync имеет целый раздел по, ВКЛЮЧАЮТ/ИСКЛЮЧАЮТ ШАБЛОНЫ. Короче говоря, для первого случая Вы могли бы сначала хотеть снять с якоря соответствие и удостовериться, что это - каталог, как так:

mail/cur/

Никакие подстановочные знаки здесь, это только проигнорирует названный каталог cur в другом названном каталоге mail.

0
ответ дан 24 November 2019 в 12:44

Теги

Похожие вопросы