Бэкап по сети через netcat

При использовании роутеров с прошивками OpenWRT возникает проблема создания резервных копий при ограниченном дисковом пространстве. Иными словами нужно делать бэкап на лету по сети. Для этого очень подходит утилита nc (netcat), которая есть уже в базовой прошивке, а так же в большинстве *nix системах.

Тестовый стенд: FreeBSD 8.1 i388, Linksys 160NL с прошивкой OpenWRT (kamikadze, backfire)

1) Описание.

У нас будет клиент-серверная схема создания резервных копий. В качестве сервера будет выступать FreeBSD, который будет открывать соединения и ожидать соединения от сервера. Всё это будет запускаться по расписанию: сначала на сервере, и потом спустя некоторое время уже на клиентах (ибо время хоть и синхронизируется с одного места, но что бы избежать ситуаций, когда сервер позже откроет соединение, чем клиент начнёт передавать на него данные)

2) Настройка сервера.

На сервере, я подготовил такой скрипт (/scripts/backup_wrt):

#!/bin/sh
d=`/bin/date +%w`
backup_path=/mnt/backup/$d
/usr/bin/killall -9 nc
(/usr/bin/nc -4dl 10.1.5.5 6625 > $backup_path/client1.tar.gz) &
(/usr/bin/nc -4dl 10.1.5.5 6635 > $backup_path/client2.tar.gz) &

Немного объясню скрипт.

Мы будем создавать 7 разных копий (каждый день новую). Перед открытием соединений, будем убивать зависшие и слушать будем только IP=10.1.5.5 (если вам нужно слушать все IP — адреса, то просто удалите адрес из команды)

Помещаем скрипт в cron:

0       12      *       *       *       root    /scripts/backup_wrt

3) Настройка клиента.

На клиенте пишем соответствующий скрипт (/scripts/backup_config):

#!/bin/sh
tar -cz -f - /bin /etc /lib /mnt /root /sbin /scripts /tmp /usr /www /dev | nc 10.1.5.5 6635

и помещаем его в cron:

12 12 * * * /scripts/backup_config

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *