Основная ошибка в вашем скрипте - вырезать
должно выглядеть так:
uptime_days=`uptime | cut -d " " -f 4`
Обратите внимание, что 5
превратилось в 4
. Это потому, что в сокращении было выбрано слово дней
, а не число перед ним.
Способ отлова таких ошибок - это добавить в код echo
, например:
echo uptime_days=$uptime_days
Итак, когда вывод содержит
uptime_days=days,
, очевидно, что произошла какая-то ошибка при синтаксическом анализе.
Есть еще пара вещей, которые можно улучшить, чтобы избежать проблем в дальнейшем:
Верхняя строка скрипта должна начинаться с #!
для чтения ядром. Ваш код все равно интерпретируется оболочкой, но если вы запустите команду по-другому, это может быть не так, поэтому сделать верхнюю строку похожей на
#!/bin/bash
- хорошая идея.
Использование двойных скобок для условных выражений в оболочке менее подвержено ошибкам. Вы также можете переместить , затем
в ту же строку с if
следующим образом:
if [[ $uptime_days -ge $max ]]; then
echo shutdown!
fi
Если вы используете абсолютный путь в фильтре (включить / исключить), он интерпретируется, начиная с корня синхронизации. Вы не исключаете каталог в источнике или исключаете каталог в месте назначения, вы исключаете каталог в дереве для синхронизации.
Таким образом:
rsync -av --delete --progress --exclude "/folder4/mytestfolder1" /source/ /destination/