как исключить определенную папку на месте назначения при использовании rsync?

Основная ошибка в вашем скрипте - вырезать должно выглядеть так:

uptime_days=`uptime | cut -d " " -f 4`

Обратите внимание, что 5 превратилось в 4 . Это потому, что в сокращении было выбрано слово дней , а не число перед ним.

Способ отлова таких ошибок - это добавить в код echo , например:

echo uptime_days=$uptime_days

Итак, когда вывод содержит

uptime_days=days,

, очевидно, что произошла какая-то ошибка при синтаксическом анализе.

Есть еще пара вещей, которые можно улучшить, чтобы избежать проблем в дальнейшем:

shebang

Верхняя строка скрипта должна начинаться с #! для чтения ядром. Ваш код все равно интерпретируется оболочкой, но если вы запустите команду по-другому, это может быть не так, поэтому сделать верхнюю строку похожей на

#!/bin/bash

- хорошая идея.

двойные скобки

Использование двойных скобок для условных выражений в оболочке менее подвержено ошибкам. Вы также можете переместить , затем в ту же строку с if следующим образом:

if [[ $uptime_days -ge $max ]]; then 
     echo shutdown!
fi
8
09.05.2016, 04:32
1 ответ

Если вы используете абсолютный путь в фильтре (включить / исключить), он интерпретируется, начиная с корня синхронизации. Вы не исключаете каталог в источнике или исключаете каталог в месте назначения, вы исключаете каталог в дереве для синхронизации.

Таким образом:

rsync -av --delete --progress --exclude "/folder4/mytestfolder1" /source/ /destination/
11
27.01.2020, 20:12

Теги

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