При использовании роутеров с прошивками 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