BackupPC
Homepage: BackupPC лицензия GNU GPL 2.
BackupPC - система резервного копирования, ориентированная на диски.
Возможности BackupPC:
- Не требует установленного клиента.
- BackupPC является SMB‐ клиентом, поддерживает Настройка и использование SSH, использует Архиватор tar gz и Использование rsync в примерах.
- Поддерживаются все возможности восстановления, в том числе прямое восстановление (через smbclient, tar, или rsync/rsyncd), загрузка zip в Linux или Архиватор tar gz архивов.
- Интеллектуальная схема пулинга, минимизирующая дисковые ресурсы и ввод/вывод. Идентичные файлы во множестве резервных копий на одном и том же или разных PC сохраняются только единожды, что приводит к экономии дискового пространства и уменьшению количества операций записи. Это также называется "дедупликация данных".
- Опция сжатия обеспечивает дополнительное уменьшение размера резервной копии. Нагрузка на процессор при этом низка, так как сжатию подвергаются только новые файлы (которых ещё нет в пуле).
- Мощный http/cgi интерфейс позволяет администраторам просматривать логи, конфигурацию, текущий статус, а пользователям - начинать и отменять резервное копирование, просматривать и восстанавливать файлы из резервных копий.
- Не нужно никаких клиентских программ. Для Windows применяется протокол SMB. А для Linux или Unix можно использовать rsync или tar (через ssh/rsh/nfs).
- Гибкие опции восстановления. Как одиночные файлы, так и Zip и Tar архивы выбранных файлов и каталогов могут быть восстановлены непосредственно в CGI интерфейсе.
- BackupPC поддерживает мобильные устройства, где имеется непостоянное подключение к сети и динамическая адресация (DHCP).
- Гибкие параметры конфигурации позволяют параллельное выполнение нескольких задач резервного копирования.
Рекомендую для резервирования связку AutoMySQLBackup и BackupPC.
Установка BackupPC на сервер Ubuntu
BackupPC 3.3 Ubuntu 16.04.3 LTS
# aptitude install backuppc
Автоматически будет создан пароль для пользователя 'backuppc'. Чтобы изменить пароль, запустите команду 'htpasswd /etc/backuppc/htpasswd backuppc'. Изменим расположение директории для бекапов. config.pl - основной конфигурационный файл:
# cd /etc/backuppc/ # nano config.pl $Conf{TopDir} = '/home/keephdd/backuppc'; $Conf{PingMaxMsec} = 200; $Conf{PingPath} = '/bin/ping'; $Conf{Ping6Path} = '/bin/ping6'; # mkdir -p /home/keephdd/backuppc/pc # mkdir -p /home/keephdd/backuppc/cpool # chown -R backuppc:backuppc /home/keephdd/backuppc # /etc/init.d/backuppc restart
Дальнейшие настройки производятся через Web интерфейс по адресу http://backuppc_server_ip/backuppc
Резервное копирование по SSH
Для использования протокола Настройка и использование SSH для резервного копирования данных с клиентского компьютера, следует создать ключи доступа.
Сервер
- Создаем ключи на сервере с установленным BackupPC
# su - backuppc $ mkdir .ssh $ cd .ssh $ ssh-keygen -t rsa -C remuserbak@backuppc
на все вопросы просто жмем клавишу Enter
$ chmod 600 id_rsa $ ls -l -rw------- 1 backuppc backuppc 1675 Фев 12 14:59 id_rsa -rw-r--r-- 1 backuppc backuppc 401 Фев 12 14:59 id_rsa.pub
С приватным ключом id_rsa программа BackupPC будет подключаться к клиентским компьютерам. На клиентские компьютер должен быть перенесён публичный ключ, сделаем это при помощи утилиты Настройка и использование SSH-copy-id, она автоматически создаст файл authorized_keys с нашим ключем в директории .ssh. Например:
ssh-copy-id -i id_rsa.pub remuserbak@<IP клиента>
Клиент Ubuntu 16.04.3 LTS
Создаем пользователя от имени которого будет производиться копирование данных и задаем ему сложный пароль. Пароль нам понадобится один раз для копирования ssh ключа.
adduser remuserbak usermod -aG sudo,adm remuserbak
Даем права на запуск sudo без пароля пользователю remuserbak. В самый конец файла добавляем строчку
> visudo remuserbak ALL=NOPASSWD: /bin/tar, /usr/bin/rsync
Переносим публичный ключ, сделаем это при помощи утилиты SSH-copy-id. Для этого на сервере, где установлен сервер BackupPC, от имени пользователя, от которого запускается демон backuppc, запускаем утилиту ssh-copy-id
su - backuppc ssh-copy-id -i .ssh/id_rsa.pub remuserbak@xxx.xxx.xxx.xxx
Для того того что все работает, подключитесь к клиентскому компьютеру используя команду
ssh 'remuserbak@xxx.xxx.xxx.xxx'
Дальнейшая настройка происходит через веб-интерфейс
http://backuppc_server_ip/backuppc
- Страница Edit Hosts добавляем адрес клиента и имя пользователя, от которого будет совершаться копирование данных, в нашем примере это пользователь remuserbak
- В настройках клиента, на странице Xfer Settings указываем XferMethod = Использование rsync в примерах, в параметре RsyncShareName задаем директории для копирования
- Не забываем заменить пользователя root на remuserbak в строках RsyncClientCmd и RsyncClientRestoreCmd. Эти изменения можно задать как глобально для всего сервера BackupPC, так и индивидуально для каждого клиента. Не забываем явно для каждого клиента задавать путь к sudo.
$Conf{RsyncClientCmd} = '$sshPath -q -x -l remuserbak $host /usr/bin/sudo $rsyncPath $argList+'; $Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l remuserbak $host /usr/bin/sudo $rsyncPath $argList+';
- Всё!
Клиенты
Не забываем явно для каждого клиента задавать путь к sudo.
- Backup Что такое протокол SMB ресурсов.
Backup локальных директорий
- Backup локальных директорий. Через веб-интерфейс изменяем параметр TarClientCmd или в файле /etc/backuppc/localhost.pl меняем строку $Conf{TarClientCmd} = '/usr/bin/env LC_ALL=C $tarPath -c -v -f - -C $shareName –totals' Заменяем на $Conf{TarClientCmd} = '/usr/bin/sudo /usr/bin/env LC_ALL=C $tarPath -c -v -f - -C $shareName –totals' Настраиваем sudo - выполнение команд от root или любой ламер может стать админом:
# visudo ... Defaults env_reset #Defaults !lecture backuppc ALL=NOPASSWD: /bin/tar, /usr/bin/rsync, /usr/bin/env
пришлось разрешить /usr/bin/env иначе возникает ошибка Got fatal error during xfer (sudo: no tty present and no askpass program specified)
Клиент для FreeBSD
- Backup Настройка и использование SSH ресурсов. Настройка клиента для ОС FreeBSD. Используем Использование rsync в примерах:
> adduser remuserbak # Даем права на запуск sudo без пароля пользователю remuserbak > visudo ... remuserbak ALL=NOPASSWD: /usr/bin/tar, /usr/local/bin/rsync # Создаем ключи на сервере с установленным BackupPC # su - backuppc $ mkdir .ssh $ cd .ssh $ ssh-keygen -t rsa -C remuserbak@test4 $ chmod 600 id_rsa $ ls -l -rw------- 1 backuppc backuppc 1675 2010-03-04 10:41 id_rsa -rw-r--r-- 1 backuppc backuppc 405 2010-03-04 10:41 id_rsa.pub
С приватным ключом id_rsa программа BackupPC будет подключаться к клиентским компютерам. На клиентские компьютер должен быть перенесён публичный ключ, сделаем это при помощи утилиты Настройка и использование SSH-copy-id, она автоматически создаст файл authorized_keys с нашим ключем в директории .ssh
$ ssh-copy-id -i id_rsa.pub remuserbak@xxx.xxx.xxx.254 Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'xxx.xxx.xxx.254' (DSA) to the list of known hosts. Password: Now try logging into the machine, with "ssh 'remuserbak@xxx.xxx.xxx.254'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
Для того чтобы убедиться что все действия выполнены успешно, пробуем подключиться по ssh с сервера. Если пароль не запрашивается, значит все в порядке.
ssh remuserbak@xxx.xxx.xxx.254
Для FreeBSD в настройках Xfer Settings меняем 3 параметра: путь к Использование rsync в примерах на клиентском компьютере и в ручную меняем строку запуска вместо -l root прописываем нашего пользователя .
$Conf{RsyncClientPath} = '/usr/local/bin/rsync'; $Conf{RsyncClientCmd} = '$sshPath -q -x -l remuserbak $host /usr/bin/sudo $rsyncPath $argList+'; $Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l remuserbak $host /usr/bin/sudo $rsyncPath $argList+';
FAQ. How to purge backups for a host?
Если нужно удалить полностью резервные файлы для хоста. Вам может понадобиться очистка пула. Его размер вы можете посмотреть в логе системы после перезапуска BackupPC.
Очистить пулл BackupPC:
su - backuppc $ /usr/share/backuppc/bin/BackupPC_nightly 0 255 BackupPC_stats 0 = pool,0,0,0,0,0,0,0,0,0,0, ...
FAQ. BackupPC: ping too slow
BackupPC: ping too slow. При возникновении этой ошибки бекап не производится. Для устранения нужно изменить параметр до 200 $Conf{PingMaxMsec} = 200;
FAQ. BackupPC: "no ping response" for localhost
После инсталляции BackupPC на Ubuntu, столкнулся тем что не архивируется localhost (то есть сервер на котором установлен непосредственно демон backuppc). В логе backuppc для localhost пишет ошибку no ping response.
Для устранения ошибки нужно прописать путь к утилите ping проверки целостности и качества локальной сети и Интернета в директиве $Conf{Ping6Path} в файле /etc/backuppc/config.pl.
$Conf{PingPath} = '/bin/ping'; # inserted '/bin/ping6' for default '': $Conf{Ping6Path} = '/bin/ping6';
Не забываем перезапустить сервис
service backuppc restart

