Salt - очень надеюсь в том числе и на твою подсказку, так как видел твой замечательный пример, но в нём не разобрался.
Нужна модификация того, что делает Salt (ссылка на пример), на основе когда-то написанного глубокоуважаемой(ибо bash-ит только в путь!) форумчанкой "Катёнкой" (ссылка)
Поскольку этот велосипед неимоверно оригинален, я попробую объяснить, что мне конкретно нужно.
Нужен скрипт запускаемый в cron, который будет синхронизировать rsync -ком, файлы на "локальной" машине с "удалённым" сервером. При этом список путей можно задавать вручную, как в примере от Катёнки.
Т.е. условно говоря, надо, чтобы работала такая вещь:
rsync -avz --progress -e 'ssh' /folder_from_local_server/ backuper@mydomain:/home/backuper/.backup/folder_from_local_server/
Как я пытался это вклинить, в существующий скрипт от "Катёнки"
cat pathlist.lst | while read line; do
rsync -avz --progress --delete -e 'ssh' "$line" [email protected]:/home/backuper/.backup/rsync$line
Если во второй части не ставить rsync$line (т.е. без $line), то работает так как мне и нужно, но файлы и каталоги из pathlist берёт нужные мне, но кидает это всё в одну кучу в /home/backuper/.backup/rsync , а это ужасный бардак.
Как можно тут поступить ?
P.s. буду использовать с генерацией ключей, специальным пользователем и может с iptables защиту придумаю.
P.p.s. что пишет при попытке использовать, как в моём примере выше:
rsync: mkdir "/home/backuper/.backup/rsync/etc/dpkg" failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(595) [Receiver=3.0.7]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.7]
Честно говоря так сходу тоже не разберусь. Тут нужны спецы по bash. Видимо проблемы с какими-то нюансами при подстановке путей, опять таки нужны спецы по bash ;).
Да не нать тут специалистов.
Перед строкой: rsync -avz --progress --delete -e 'ssh' "$line" [email protected]:/home/backuper/.backup/rsync$line
Поставить: mkdir -p /home/backuper/.backup/rsync$line ток это конечно нуна сделать на [email protected]
rsync запускает mkdir без параметра -p потому не может он создать каталоги внутри тех которые ещё не существуют, а с параметром этим создаст всё дерево, которое указано. (собсна в моём скрипте именно так и пользуется оно...)
[email protected] ? Это можно как-то сделать из этого же скрипта ?
В смысле это надо сделать наИли тут всё и усложняется ?
Если ssh по ключу без пароля, то так наверное примерно ssh [email protected] "mkdir -p /home/backuper/.backup/rsync$line"
Ну как я понимаю rsync запускается тут и копирует всё куда-то на [email protected]
О как, а ларчик просто открывался ;)
Отправить комментарий