В сегодняшней заметке я буду рассматривать как управлять резервным копированием с системы Ubuntu 12.04.5 Server с применением Webориентированного приложения имя которомуbackuppc. Давно хотел его использовать, но как то руки не доходили, а если совсем быть честным, то тратитить время на разбирание, но все меняется, ведь если хочешь что-то сделать, то лучше сделать самим чем полагаться на кого-либо. Почему я кстати выбрал именно утилиту backuppc, да потому что это решение для энтерпрайз уровня. Бекапирование это неотъемленый процесс, как системного администратора так и продвинутого пользователя которому Важно сохранять свои или чужие данные, а не бегать потом и рвать на себе волосы если в результате непредвиденных причин данные потеряны. Сейчас уже все составляющие наработок стараются переводить в электронный вид и потеря их может привести к остановке рабочих процессов, многолетнего труда и многого другого. Но довольно лирики перейдука я к любимой части — это практическая демонстрация ради которой и создавалась данная заметка.

Как всегда обновляем систему до самого последнего в текущей релизе:

ekzorchik@srv-serv:~$ sudo apt-get update && sudo apt-get upgrade -y

Разворачивать данный продукт буду с использование репозитариев системы Ubuntu 12.04.5 Server:

ekzorchik@srv-serv:~$ sudo apt-get install backuppc -y

General type of mail configuration: No configuration

Which web server would you like to reconfigure automatically: apache2

если же Вы хотите изменить инсталляционные настройки, то задействует команду:

ekzorchik@srv-serv:~$ sudo dpkg-reconfigure backuppc

Почему-то в моем случае не произошло уведомление, с каким логином и паролем заходить на Webоснастку backuppc, посмотрев содержимое файла пароля выяснил, что логин — это backuppc, а вот пароль зашифрован:

root@srv-serv:~# cat /etc/backuppc/htpasswd

backuppc:$apr1$/S9ftu2x$N/7Bct3/0.xZ3hSKmXEni0

но ничего, сейчас я его просто сменю на тот который в рамках этой заметки мне будет удобен:

ekzorchik@srv-serv:~$ sudo htpasswd /etc/backuppc/htpasswd backuppc

[sudo] password for ekzorchik:712mbddr@

New password:712mbddr@

Re-type new password:712mbddr@

Updating password for user backuppc

Чтобы открыть Webоснастку системы резервного копирования нужно в браузере в строке адреса набрать:

http://IP&DNS/backuppc

Имя пользователя: backuppc

Пароль: 712mbddr

и нажать «Вход»

Авторизуюсь в Web-оснастке BackupPC резервного копирования

Так выглядит панель администрирования backuppc:

Так выглядит панель администрирования BackupPC

Прежде чем познакомится с настройками через Webинтерфейс, нужно познакомится с консольными каталогами:

/etc/backuppc/config.pl основной конфигурационный файл

/etc/backuppc/hosts файл хостов

/etc/backuppc/pc/HOST.pl per-pc config file

/var/lib/backuppc/log/BackupPC лог файлы

Самый главный конфигурационный файл — это /etc/backuppc/config.pl в нем производятся все настройки: (Ниже приведены некоторые описания параметров)

$Conf{TopDir} = ‘/var/lib/backuppc’; – каталог куда буду сохраняться все бекапы

$Conf{ConfDir} = ‘/etc/backuppc’; – каталог с конфигурационными файлами

$Conf{LogDir} = ‘/var/lib/backuppc/log’; – логи работы

$Conf{InstallDir} = ‘/usr/share/backuppc’; – инсталляционные файлы

$Conf{CgiDir} = ‘/usr/share/backuppc/cgi-bin’; – скрипты для Web-ориентированного представления.

На заметку: в роли каталога куда сохранять все бекапы может выступать, как подключенный Dropbox-диск, Yandexдиск так и отдельно стоящие хранилища.

В рамках текущей заметки каталог /var/lib/backuppc я оставляю по умолчанию, если будете изменять, то обязательно не забудьте выставить права доступа точно такие же как и для текущего:

ekzorchik@srv-serv:~$ sudo ls -l /var/lib/backuppc/

total 20

drwxr-x— 18 backuppc backuppc 4096 May 17 21:00 cpool

drwxr-x— 2 backuppc backuppc 4096 May 17 21:00 log

drwxr-x— 3 backuppc backuppc 4096 May 17 20:47 pc

drwxr-x— 2 backuppc backuppc 4096 May 17 2012 pool

drwxr-x— 2 backuppc backuppc 4096 May 17 2012 trash

Теперь перейду настройке для бекапирования каталога с клиентского компьютера под управлением Windows 7:

C:\Users\ekzorchik>net share | findstr "Blog"

Blog_backup D:\Blog_backup

http://IP&DNS/backuppc – Server – Edit HostsНажимаю Add и заполняю:

host = IP&DNS-адрес удаленной Windows системы, в моем случаем это 192.168.1.43

dhcp = ставим галку если на системе используется динамическое получение адреса (я не поставил)

user = имя пользователя под которым возможно просматривать/изменять настройки бекапирования (этот пользователь должен быть в /etc/backuppc/htpasswd)

После нажимаем SAVE

После переходим к настройками конфигурации для системы для которой будем совершать резервное копирование, делаем так: в левой части пункта Hosts выбираем только что заведенный хост: Select a host…находим 192.168.1.43 — после Edit Config и перемещаемся на вкладку Xfer, здесь привожу настройки к следующему виду:

XferMethodпротокол посредством которого будет происходит извлечение данных с клиента, т. к. в моем случаем это Windows система и на ней нет ни каких дополнительный утилит то выбираю: smb

На заметку: существуют методы резеврного копирования с которыми backuppc может работать:

‘smb’: backup and restore via smbclient and the SMB protocol.

Easiest choice for WinXX.

– ‘rsync’: backup and restore via rsync (via rsh or ssh).

Best choice for linux/unix. Good choice also for WinXX.

– ‘rsyncd’: backup and restore via rsync daemon on the client.

Best choice for linux/unix if you have rsyncd running on

the client. Good choice also for WinXX.

– ‘tar’: backup and restore via tar, tar over ssh, rsh or nfs.

Good choice for linux/unix.

– ‘archive’: host is a special archive host. Backups are not done.

An archive host is used to archive other host’s backups

to permanent media, such as tape, CDR or DVD.

ClientCharsetLegacy – кодировка на удаленной системе чтобы исключить некорректное отображение лучше использовать UTF-8

SmbShareName – здесь указываю имя рассшаренного каталога (в моем случае это: Blog_backup)

SmbShareUserName – указываю учетную запись на клиентской машине (ekzorchik)

SmbSharePassword – указваю пароль учетной записи на клиентской машины (4096mbddr)

после переключаюсь на вкладку Schedule в которой предопределяется какие бекапы делать.

FullPeriod – период создания полного бекапа (задается в сутках), значение 6.97 (раз в неделю)

FullKeepCnt – количество полных бекапов которые будут располагаться в дефолтном каталоге резервных копий.

FullKeepCntMin — минимальное количество хранимых полных бекапов

FullAgeMax — максимальный возраст хранимого полного бекапа

IncrPeriod – период создания инкрементального бекапа, значение 0.97 (раз в сутки)

IncrKeepCnt — сколько инкрементальных бекапов необходимо хранить

IncrKeepCntMin — минимальное количество хранимых инкрементальных бекапов

IncrLevels — уровень инкрементального бекапа

IncrFill — использовать в системе хард-линки, чтобы инкрементальный бекап выглядел полным.

BlackoutGoodCnt – количество пакетов ping, успешно принятых от хоста перед бэкапом.

BlackoutPeriods – время, в которое архивы делать нельзя. По умолчанию значение принимаем: Эта настройка означает, что нельзя делать архивы с 7.00 до 19.30 в рабочие дни.

BackupDisabled –

0 — бэкапы производятся в автоматическом и ручном режиме,
1 — бэкапы могут производится только в ручном режиме,
2 — бэкапы отключены.

По окончании настроек следует нажать кнопку над вкладками: Xfer, Email, Backup Settings, Schedule – SAVE для применения настроек.

На заметку: если Вам понадобиться изменить значение параметров, то ниже параметра ставим галочку Override и указываем новое значение.

На заметку: если Вы хотите по подробнее ознакомится с назначение какого-либо параметра, то просто щелкните по нему левой кнопкой мыши и вы сразу же перейдете по гиперссылке к справочной системе, где будет описано что представляем из себя данный параметр и какие значения он может принимать.

На заметку: для удаления хоста резервного копирования через Webинтерфейс: http://IP&DNS/backuppc – Server – Edit Hostsнаходим нужный хост и нажимаем Delete, но для того чтобы удалить полностью бекапы сделанные у него нужно в ручную удалить каталог:

/var/lib/backuppc/pc/HOST

если же Вам вдруг понадобилось все таки бекапировать удаленный хост, то добавив настройки IP&DNS, а до этого не удаляв вручную файлы — резервное копирование может дополнять новыми файлами и в последствии через историю видеть и восстанавливать файлы.

Теперь после того, как настройки резервного копирования до добавленного хоста Windows добавлены запустим процесс создания полной резервной копии (потому как я указал, что бекап делать вручную):

http://IP&DNS/backuppc – Hosts – Select a host… – 192.168.1.43и нажимаем Start Full Backup

Создаю полный бекап указанного каталога с Windows системы

Подтверждаем:

Are you sure?

You are about to start a full backup on 192.168.1.43.

Do you really want to do this? Нажимаем Start Full Backup

Backup requested on 192.168.1.43 by backuppc

Reply from server was: ok: requested backup of 192.168.1.43 (doFull)

Теперь после того, как задание запущено, можно в консоли посмотреть какие файлы теперь в каталоге где располагаются резервные копии по хосту:

ekzorchik@srv-serv:~$ sudo apt-get install tree -y

ekzorchik@srv-serv:~$ sudo tree /var/lib/backuppc/pc/192.168.1.43

/var/lib/backuppc/pc/192.168.1.43

├── 0

│   ├── backupInfo

│   └── fBlog_backup

│   ├── attrib

│   ├── fAlldb-dump_2015-04-22-13-03-03-36.sql.gz

│   ├── fAlldb-dump_2015-04-23-13-06-06-02.sql.gz

│   ├── fAlldb-dump_2015-04-24-13-02-02-50.sql.gz

│   ├── fbackup_domains

│   ├── f.bashrc

│   ├── fdomains_220415,13_00_02.tgz

│   └── fdomains_230415,13_00_02.tgz

├── backups

├── backups.old

├── LOCK

├── LOG.052015

└── XferLOG.0.z

2 directories, 14 files

А через Webинтерфейс можно посмотреть лог задания:

http://IP&DNS/backuppc – Hosts – Select a host… – 192.168.1.43 – LOG file

Contents of file /var/lib/backuppc/pc/192.168.1.43/LOG.052015, modified 2015-05-17 22:00:00

2015-05-17 21:59:32 full backup started for share Blog_backup

2015-05-17 22:00:00 full backup 0 complete, 7 files, 561770789 bytes, 0 xferErrs (0 bad files, 0 bad shares, 0 other)

а также Файлы бекапа и если нужно восстановить их, как по отдельности так и все вместе разом:

http://IP&DNS/backuppc – Hosts – Select a host… – 192.168.1.43 – Backup browse

Результат отображения сделанного резервного копирования

Теперь допустим в каталог Blog_backup на клиентской станции добавили еще один файл, перейдя в сам хост запустим создание задание на инкрементальный бекап:

http://IP&DNS/backuppc – Hosts – Select a host… – 192.168.1.43 – Start Incr Backup
You are about to start a incremental backup on 192.168.1.43.

Do you really want to do this? Нажимаю Start Incr Backup

Reply from server was: ok: requested backup of 192.168.1.43 (doIncr)

Текущие задачи можно посмотреть:

http://IP&DNS/backuppc – Server – Status

(видно что сейчас у меня идет задача восстановления, я на Windows системе удалил все файлы, а после запустил восстановление)

Задание на восстановление удаленного файла завершилось успешно

На заметку: Считаю минусом данного решения, как Backuppc то что результаты отображения на Webстранице не обновляются динамически поэтому приходится просто нажимать клавишу F5, хотя если для задания настроить использование почты — по ее приходу и отчету можно судить отработало ли задание или нет.

На заметку: BackupPC к сожалению не имеет настроек на запуск задания в определенное время, так же нет средств проверки резервных копий.

А теперь рассмотрю в шагах, как осуществлять резервное копирование клиентской станции под управлением Ubuntu 12.04.5 Server:

На хостовой где развернут BackupPC создаем публичный ключ ssh под пользователем backuppc:

ekzorchik@srv-serv:~$ sudo su - backuppc

$ ssh-keygen

Your identification has been saved in /var/lib/backuppc/.ssh/id_rsa.

Your public key has been saved in /var/lib/backuppc/.ssh/id_rsa.pub.

$ exit

Подключаемся к удаленной системе и создаем там пользователя backuppc с паролем:

ekzorchik@srv-serv:~$ ssh 192.168.1.52

ekzorchik@srv-cluster1:~$ sudo adduser backuppc

[sudo] password for ekzorchik:

Adding user `backuppc’ …

Adding new group `backuppc’ (1001) …

Adding new user `backuppc’ (1001) with group `backuppc’ …

Creating home directory `/home/backuppc’ …

Copying files from `/etc/skel’ …

Enter new UNIX password:712mbddr@

Retype new UNIX password:712mbddr@

passwd: password updated successfully

Changing the user information for backuppc

Enter the new value, or press ENTER for the default

Full Name []:

Room Number []:

Work Phone []:

Home Phone []:

Other []:

Is the information correct? [Y/n] y

Теперь нужно дополнить нашего пользователя backuppc на клиентской станции дополнительными правами, чтобы его ничто не ограничивало при копировании файлов и каталогов:

ekzorchik@srv-cluster1:~$ sudo nano /etc/sudoers

backuppc ALL = NOPASSWD: /usr/bin/rsync

ekzorchik@srv-cluster1:~$ exit

logout

Connection to 192.168.1.52 closed.

Теперь с хостовой системы копирую испод учетной записи backuppc публичный ключ на клиентскую станцию:

ekzorchik@srv-serv:~$ sudo su - backuppc

$ ls .ssh

id_rsa id_rsa.pub

$ ssh-copy-id -i /var/lib/backuppc/.ssh/id_rsa.pub backuppc@192.168.1.52

backuppc@192.168.1.52’s password:712mbddr@

Проверяю что могу подключиться без пароля:

$ ssh 192.168.1.52

backuppc@srv-cluster1:~$ w | grep backuppc

backuppc pts/0 192.168.1.50 23:24 0.00s 0.22s 0.00s w

backuppc@srv-cluster1:~$ exit

logout

Connection to 192.168.1.52 closed.

$ exit

Теперь через Webстраницу BackupPC настроим клиентское подключение к Ubuntu системе: srv-cluster1

http://IP&DNS/backuppc – Server – Edit Hosts – Add –

Host = 192.168.1.52

user = backuppc

и нажимаю Save для применения настроек, после перехожу в добавленный хост для редактирования параметров резервную копию которого я хочю делать:

http://IP&DNS/backuppc – Hosts – Select a host… – 192.168.1.52 – Edit Config

перехожу на вкладку: Xfer

XferMethod = rsync

ClientCharsetLegacy = UTF-8

RsyncShareName = указываем путь к директории, которую мы хотим бэкапить (в моем случае это каталог /etc)

RsyncClientCmd = параметры подключения к серверу для выполнения резервного копирования изменяю на:

$sshPath -q -x -i /var/lib/backuppc/.ssh/id_rsa -l backuppc $host /usr/bin/sudo $rsyncPath $argList+

RsyncClientRestoreCmd— параметры подключения к серверу для выполнения восстановления

изменяю на:

$sshPath -q -x -i /var/lib/backuppc/.ssh/id_rsa -l backuppc $host /usr/bin/sudo $rsyncPath $argList+

На заметку:

Где:
$sshPath -путь к директории где лежит SSH
q— тихое подключение
-x— не пробразывать х11
-i — используем аторизацию по ключу
/var/lib/backuppc/.ssh/key -путь где у нас лежит ключ
backuppc — логин с которым мы подключаемся
$host — переменная отвечающая за адрес хоста
/usr/bin/sudo — указываем путь к sudo, чтобы с ним запустить ПО
$rsyncPath — переменная которая отвечает за путь к rsync который будет запущен под sudo
$argList+— переменная отвечающая за список аргументов для rsync

Запускаю задание:

http://IP&DNS/backuppc – Hosts – Select a host… – 192.168.1.52 – 192.168.1.52 Home и нажимаю: Start Full Backupчерез некоторое время после выбираю: Browse Backup и вижу, что бекап успешно сделался:

Резервное копирование файлов с Ubuntu системы выполняется успешно

и по логам тоже все хорошо: LOG file

Contents of file /var/lib/backuppc/pc/192.168.1.52/LOG.052015, modified 2015-05-17 23:44:15

2015-05-17 23:44:13 full backup started for directory /etc

2015-05-17 23:44:15 full backup 0 complete, 1451 files, 1803871 bytes, 0 xferErrs (0 bad files, 0 bad shares, 0 other)

А теперь попробую на клиентской станции удалить файл /etc/localtime и восстановить его:
ekzorchik@srv-cluster1:~$ sudo rm /etc/localtime

Восстановление проходит успешно. Работает.

На заметку: если удалить файл /etc/passwd, то восстановить его не получится.

На заметку: Если я правильно понимаю то всплыло еще одно наблюдение – нельзя создать для хоста несколько заданий ориентированных на различный метод подключения к клиентской станции.

На заметку: в настройках брандмауэера следует открыть порт для работы данного комплекса по управлению резервным копированием:

  • File and Printer Sharing: TCP 139, 445 <-> UDP 137, 138
  • Rsync: TCP 873

Из всего разобранного выше напрашивается вывод, да можно использовать данную утилиту, есть конечно же плюсы и минусы а также некоторые замечания по работе, но использовать в повседневности я пока данный продукт не буду, буду пробовать другие или составлять свой собственный скрипт который под мои конкретные задачи осуществит задуманное. А пока собственно все, с уважение автор блога — ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru