В сегодняшней заметке я буду рассматривать как управлять резервным копированием с системы 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
и нажать «Вход»
Так выглядит панель администрирования 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
Подтверждаем:
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 и вижу, что бекап успешно сделался:
и по логам тоже все хорошо: 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.