Помогите написать полезный скрипт архивирования RSYNC -ом сразу на удалённую машину, полезнейшая вещь !

Изображение пользователя balamutick.

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" user@99.99.99.99:/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]

0
salt - 26 Сентябрь, 2011 - 21:10
Изображение пользователя salt.

Честно говоря так сходу тоже не разберусь. Тут нужны спецы по bash. Видимо проблемы с какими-то нюансами при подстановке путей, опять таки нужны спецы по bash ;).

+1
Жюстина - 27 Сентябрь, 2011 - 03:11
Изображение пользователя Жюстина.

Да не нать тут специалистов.

+1
Жюстина - 27 Сентябрь, 2011 - 03:17
Изображение пользователя Жюстина.

Перед строкой: rsync -avz --progress --delete -e 'ssh' "$line" user@99.99.99.99:/home/backuper/.backup/rsync$line

Поставить: mkdir -p /home/backuper/.backup/rsync$line ток это конечно нуна сделать на user@99.99.99.99

rsync запускает mkdir без параметра -p потому не может он создать каталоги внутри тех которые ещё не существуют, а с параметром этим создаст всё дерево, которое указано. (собсна в моём скрипте именно так и пользуется оно...)

0
balamutick - 27 Сентябрь, 2011 - 04:22
Изображение пользователя balamutick.

Поставить: mkdir -p /home/backuper/.backup/rsync$line ток это конечно нуна сделать на user@99.99.99.99 В смысле это надо сделать на user@99.99.99.99 ? Это можно как-то сделать из этого же скрипта ?

Или тут всё и усложняется ?

0
Жюстина - 27 Сентябрь, 2011 - 05:23
Изображение пользователя Жюстина.

Если ssh по ключу без пароля, то так наверное примерно ssh user@99.99.99.99 "mkdir -p /home/backuper/.backup/rsync$line"

Ну как я понимаю rsync запускается тут и копирует всё куда-то на user@99.99.99.99

0
salt - 27 Сентябрь, 2011 - 07:59
Изображение пользователя salt.

О как, а ларчик просто открывался ;)

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры