Они так используют
echo '***************-:START OF THE REPORT:-***********' $log
Строка просто отображает содержимое $log
в командной строке, не действуя так, как если бы вы вводили эту строку в консоли.
Чтобы линия работала так, как вы ожидаете, вы можете использовать или использовать eval
.
eval echo '***************-:START OF THE REPORT:-***********' $log
Предполагая, что вы действительно хотите копировать из каталога 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
просто для того, чтобы сделать пути короче, чтобы решение было более ясным.
Проблема в том, что ваш целевой каталог содержит исходный каталог. Исходный каталог модифицируется (удаляется ), поскольку он является частью иерархии целевых каталогов (и потому, что он, очевидно, не содержит самого себя).
Чтобы решить эту проблему, я бы предложил переместить.../categories/temp
(ваш исходный каталог )в какое-то место за пределами.../categories
(вашего целевого каталога ). Таким образом, исходный каталог не будет изменен из-за того, что он является частью целевой иерархии.