Я создал оболочку резервного копирования, которая работает как задание 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"?