rsync --delete полностью понимает правильный синтаксис, чтобы сохранить исходные каталоги и синхронизировать файлы с целевым каталогом

Они так используют

echo '***************-:START OF THE REPORT:-***********' $log
Строка

просто отображает содержимое $logв командной строке, не действуя так, как если бы вы вводили эту строку в консоли.

Чтобы линия работала так, как вы ожидаете, вы можете использовать или использовать eval.

eval echo '***************-:START OF THE REPORT:-***********' $log
0
30.10.2019, 15:20
2 ответа

Предполагая, что вы действительно хотите копировать из каталога temp, который находится внутри вашей цели, вам нужно сказать rsync, чтобы он не удалял это поддерево из места назначения.

В данном случае исключенное дерево каталогов находится tempв верхней части целевого дерева, поэтому /temp. Чтобы сообщить rsync, что мы хотим исключить каталог, а не файл, мы добавляем суффикс /, поэтому окончательное исключение становится /temp/.

base=/home/acnt/public_html/_private/database/static/categories
rsync --dry-run -av --delete-after --exclude '/temp/' "$base/temp/" "$base/"

Я использовал $baseпросто для того, чтобы сделать пути короче, чтобы решение было более ясным.

1
28.01.2020, 02:29

Проблема в том, что ваш целевой каталог содержит исходный каталог. Исходный каталог модифицируется (удаляется ), поскольку он является частью иерархии целевых каталогов (и потому, что он, очевидно, не содержит самого себя).

Чтобы решить эту проблему, я бы предложил переместить.../categories/temp(ваш исходный каталог )в какое-то место за пределами.../categories(вашего целевого каталога ). Таким образом, исходный каталог не будет изменен из-за того, что он является частью целевой иерархии.

1
28.01.2020, 02:29

Теги

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