Назад | Перейти на главную страницу

Файл журнала rsync начинает включать буквальный формат даты в путь

Я создал оболочку резервного копирования, которая работает как задание cron. Это не новость .... Но в командной строке у меня есть имя файла журнала, указанное в формате даты. Все в порядке, пока не дойдет до папки, в которой находится файл журнала. Он создает папку с этим именем, и похоже, что rsync копирует все в этой папке, включая странное имя папки, снова и снова. Я пытаюсь выполнить rsync с моей Synology, где установлен DSM 6.1. Я поделился папкой на Synology с / mnt / NAS2 на моем сервере. Скрипт

/root/backup/backup_daily.sh

он настроен на запуск один раз в день. командная строка в скрипте в основном:

rsync -avzr --stats --progress --log-file=$(date +'%Y%m%d') --exclude-from=$EXCLUDE / /mnt/NAS2/backup

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

Вот что происходит (см. После файла xx):

2017.04.03 20:51:09 [1669]> f +++++++++ lib / xtables / libxt_time.so

03.04.2017 20:51:09 [1669]> f +++++++++ lib / xtables / libxt_tos.so

2017/04/03 20:51:09 [1669]> f +++++++++ lib / xtables / libxt_u32.so

2017.04.03 20:51:09 [1669]> f +++++++++ lib / xtables / libxt_udp.so

2017.04.03 20:51:09 [1669] cd +++++++++ lib64 /

2017/04/03 20:51:09 [1669] cL +++++++++ lib64 / ld-linux-x86-64.so.2 -> / lib / x86_64 -linux-gnu / ld-2.23.so

2017/04/03 20:51:09 [1669] cd +++++++++ opt /

2017.04.03 20:51:09 [1669] cd +++++++++ root /

03.04.2017 20:51:09 [1669]> f +++++++++ root / .bash_history

03.04.2017 20:51:09 [1669]> f +++++++++ root / .bashrc

2017/04/03 20:51:09 [1669]> f +++++++++ root / .profile

2017.04.03 20:51:09 [1669]> f +++++++++ root / .selected_editor

2017.04.03 20:51:09 [1669]> f +++++++++ root / 20170403

2017.04.03 20:51:09 [1669]> f +++++++++ root / xx

2017/04/03 20:51:09 [1669] cd +++++++++ root / + "% Y% m% d"). Log /

2017/04/03 20:51:09 [1669] cL +++++++++ root / + "% Y% m% d"). Log / initrd.img -> boot / в itrd.img-4.4.0-71-generic

2017/04/03 20:51:09 [1669] cL +++++++++ root / + "% Y% m% d"). Log / initrd.img.old -> boo t / initrd.img-4.4.0-70-generic

2017/04/03 20:51:09 [1669] cL +++++++++ root / + "% Y% m% d"). Log / vmlinuz -> boot / vmlin uz-4.4.0-71-generic

[Это продолжается и продолжается.]

Я должен сделать что-то явно не так ... Надеюсь, я предоставил достаточно информации и использовал правильные правила / отступы, поскольку это первое сообщение на этом форуме.

Спасибо. Если я запускаю скрипт вручную, то же самое. Я ожидаю, что если я исправлю имя файла журнала, этого не произойдет. Я не использую дату где-либо еще, я использую ее только один раз в скрипте для установки переменной. Как я уже упоминал, для простоты я поместил эту часть в командную строку. Сценарий очень короткий. В этой версии я помещаю дату в командную строку, но изначально я использовал CURDATE - без разницы.

#!/bin/bash
#
# Backup (Incremental) of server
#
LOCALDIR=/
SERVERDIR=/mnt/NAS2/backup
EXCLUDE='/root/backup/exclude.lst'
CURDATE="$(date +'%Y%m%d')"
LOGFILE="/root/backup/$CURDATE.log"

rsync -avzr --stats  \
 --progress --log-file=$(date +'%Y%m%d') \
 --exclude-from=$EXCLUDE $LOCALDIR $SERVERDIR

Это происходит неправильно сразу после резервного копирования файла / root / xx, и это именно та точка, где создается файл журнала. Итак, я думаю, что это идет не так, потому что он пытается сделать резервную копию файла журнала, в который он записывает. По этой причине я попытался исключить папку резервного копирования, но, похоже, это проигнорировано. Я нашел некоторое обсуждение файла исключения, но, возможно, я неправильно это понял, поскольку он все еще пытается сделать резервную копию этой папки.

Exclude.lst, для справки:

lost+found
down
/tmp
.cache
.thumbnails
/dev
/media
/mnt
/proc
/sys
/root/backup/

Примечание: это тестовый сервер, не в сети, просто для тестирования скриптов, прежде чем я буду использовать его на живом сервере :). Кстати - использование rsync с ssh для синхронизации кажется лучшим вариантом, чем резервное копирование в общую папку, но даже после копирования ключа с использованием ssh-copy-id Synology продолжает запрашивать пароль, так что это еще одна проблема. В очередной раз благодарим за помощь.

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

Вы пытались установить --log-file к статическому значению? Потому что для меня это похоже на root/+"%Y%m%d").log/vmlinuz часть что-то пошло не так. Есть ли у вас где-нибудь еще в вашем скрипте определение даты вроде "% Y% m% d"?