BackupPC
Esta guía lo asistirá en la configuración de BackupPC usando los RPMs de CentOS en el repositorio testing de CentOS. No entraremos en explicaciones detalladas de todas las posibles configuraciones de BackupPC. Supondremos además que usted está instalando BackupPC para hacer copias de respaldo mediante rsync. BackupPC puede hacer respaldos con archive, tar, smb, y rsyncd, pero esta guía se concentrará únicamente en rsync a otros hosts Linux. BackupPC está muy bien documentado en cuanto a opciones de configuración, y la guía está presente en la interfaz web. Además, BackupPC debe residir en su propio servidor, ya que Apache debe correr como el usuario creado por BackupPC en el sistema, lo que podría afectar la operación normal del web server.
Contents
1. Sistema
CentOS 5.x
2. Referencias
http://backuppc.sourceforge.net/
3. Preparación del sistema
3.1. Preparando los repositorios
Lo primero que hay que hacer es instalar el repositorio testing de CentOS, junto con el plugin yum-priorities.
# cd /etc/yum.repos.d # wget http://dev.centos.org/centos/5/CentOS-Testing.repo # yum install yum-priorities
Siga la guía en el wiki para la preparación de (priorities). Si tiene el repositorio RPMForge instalado, convendrá asegurarse de que todos los items de CentOS Base tengan prioridad 1, los de RPMForge prioridad 2, y el repositorio CentOS testing, prioridad 3. Si no tiene instalado el repositorio RPMForge, entonces todos los paquetes Perl serán descargados del repositorio testing. En caso contrario, provendrán de RPMForge. Para instalar el repositorio RPMForge, siga la guía en el wiki para el repo RPMForge.
3.2. Instalar BackupPC
A continuación, instale el RPM de BackupPC RPM, Apache, y mod_perl. Todas las dependencias de Perl se descargarán automáticamente.
# yum --enablerepo=c5-testing install backuppc httpd mod_perl
3.3. Configurar Apache
Como se dijo, el usuario BackupPC creado en el sistema al instalar el RPM tiene que ejecutar Apache para que todo funcione correctamente con los CGIs y mod_perl. Establezca los valores adecuados en httpd.conf.
# vim /etc/httpd/conf/httpd.conf ## Change User apache to User backuppc User backuppc Servername backuppc.domain.com:80
Grabe el archivo y salga, luego modifique el archivo backuppc.conf que fue creado bajo el directorio conf.d.
# vim /etc/httpd/conf.d/backuppc.conf ## Change Allow from 127.0.0.1 to all Allow from all
Grabe y salga del archivo, y luego cree el usuario y password al cual usted le dará acceso a la interfaz web.
# htpasswd -c /var/lib/backuppc/passwd/htpasswd mi_usuario New password: mi_password Re-type new password: mi_password Adding password for user mi_usuario
Por último, arranque Apache y configúrelo para arrancar al momento de booteo. Luego use el navegador para examinar su máquina y compruebe que Apache esté sirviendo una página de prueba.
# service httpd start # chkconfig httpd on
Navegue a la dirección http://su_servidor y verifique que Apache esté trabajando bien.
4. Configuración del server BackupPC
4.1. Configuración principal de BackupPC
Hace falta editar la configuración inicial en la línea de comandos con unos parámetros, y luego el resto puede hacerse, o bien desde la línea de comandos, o desde la interfaz web. Para empezar, abra el archivo principal de configuración de BackupPC, y establezca los siguientes parámetros. El camino TopDir es donde residen los datos. El camino por defecto es /var/lib/backuppc. Yo tengo una partición encriptada para almacenar los respaldos, de modo que mi camino es /srv/backuppc. Cámbielo según su necesidad.
# vim /etc/BackupPC/config.pl ## Default transfer method BackupPC uses. $Conf{XferMethod} = 'rsync'; ## Path to where actual backup data is stored. $Conf{TopDir} = '/var/lib/backuppc'; ## Path to init.d which is used to to start server. $Conf{ServerInitdPath} = '/etc/init.d/backuppc'; $Conf{ServerInitdStartCmd} = '$sshPath -q -x -l root $serverHost$serverInitdPath start'; ## Allowed user that you created using htpasswd. $Conf{CgiAdminUsers} = 'mi_usuario';
4.2. Preparación de Sudo para BackupPC
El usuario backuppc necesita tener acceso a sudo para correr los comandos gtar y tar. De otro modo, BackupPC no podrá funcionar correctamente. Ya debe estar instalado sudo en su sistema, así que puede modificar lo que necesite usando el comando visudo.
# visudo ## Comment out Defaults requiretty ## Add the following two lines. Defaults !lecture backuppc ALL=NOPASSWD:/bin/gtar,/bin/tar
Grabe y salga, luego reinicie Apache. Arranque BackupPC y configúrelo para arrancar al momento de booteo.
# service httpd restart # service backuppc start # chkconfig backuppc on
Abra un navegador y vaya a la interfaz web de BackupPC en http://mi_server/backuppc. Deberá ingresar usando el nombre de usuario y password que creó anteriormente. Luego verá una página de información general sobre BackupPC. Si no es así, vuelva sobre sus pasos y compruebe que Apache y BackupPC estén configurados correctamente.
4.3. Claves SSH de BackupPC
Como nos estamos concentrando en respaldos con rsync, le convendrá crear claves sin password para ser usadas por el proceso backuppc al conectarse remotamente a los hosts a ser respaldados. Como root, cree el directorio oculto SSH bajo /var/lib/backuppc y cambie los permisos en forma adecuada.
# cd /var/lib/backuppc # mkdir .ssh # chown backuppc.backuppc .ssh # chmod 700 .ssh
A continuación, ingrese como usuario backuppc. Deberá especificar un shell (intérprete de comandos), ya que por defecto el usuario backuppc no tiene shell asignado. Luego cree las claves SSH sin password usando ssh-keygen.
# su -s /bin/bash backuppc bash-3.2 $ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/var/lib/backuppc/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/lib/backuppc/.ssh/id_dsa. Your public key has been saved in /var/lib/backuppc/.ssh/id_dsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx backuppc@host.domain.name
4.4. Clave del servidor en el cliente
Por cada cliente para el cual vaya a configurar respaldos, necesitará copiar en él la clave que ha creado en el server. Para hacerlo, continúe desde el último paso, y corra el comando ssh-copy-id mientras aún esté logueado como el usuario backuppc en el servidor.
bash-3.2$ ssh-copy-id -i .ssh/id_dsa.pub root@host_to_backup
Deberá haberse copiado la clave al host, y además dejarlo a usted en sesión con el host mediante SSH.
5. Preparación del cliente
5.1. Elementos de BackupPC
Antes de empezar a usar la interfaz web, expliquemos algunas cuestiones básicas sobre las configuraciones y opciones usadas con BackupPC. La mayoría de las guías que he leído me han dejado sin información sobre este aspecto. El archivo de configuración que usted editó anteriormente, ubicado en /etc/BackupPC/config.pl, es donde residen todos los valores por defecto para BackupPC. Este archivo de configuración puede ser editado en la línea de comandos, o a través de la GUI, donde la documentación está ligada a las opciones. Cuando usted ingrese en la interfaz web, verá una pestaña de Edit Config (Editar Configuración) a la izquierda. Al hacer click aquí, estará efectivamente editando el archivo /etc/BackupPC/config.pl. Hasta leer la documentación, deje todas o la mayor parte de las opciones en el valor por defecto, o de lo contrario pronto se encontrará con un sistema de respaldo en desperfecto.
Aunque el archivo de configuración principal es quien establece todos los valores por defecto, usted puede especificar estos valores host por host. Luego de agregar un host a la interfaz web, las configuraciones que agregue al host se sobreimpondrán a los valores por defecto. Esto creará un archivo en un directorio aparte, /etc/BackupPC/pc/nombre_de_host.pl. Por ejemplo, estos archivos podrían contener los directorios que van a ser respaldados, o excluidos de los respaldos, para el host que estamos configurando.
A menos que estemos respaldando directorios idénticos en todos los hosts, querremos modificar los valores por defecto para especificar los directorios luego de crear un host. Esto se hace con la pestaña Xfer con el nombre de recurso RsyncShareName. Debajo de este control está el de BackupFilesExclude donde se pueden mencionar directorios como /var/cache para ser excluidos.
Bajo la pestaña principal BackupSettings, encontrará DumpPreUserCmd. Esto le permite usar cualquier clase de script a ser especificado, que se ejecutará antes del rsync efectivo de los directorios. Por ejemplo, si tiene bases de datos que deben ser volcadas e incluidas en los respaldos, se especificarán aquí. Existe ya un proyecto AutoMySQLBackup de SourceForge, que explicaremos en la siguiente sección.
DumpPostUserCmd le permite correr un comando luego de que ocurra el respaldo, y los parámetros DumpPreShareCmd y DumpPostShareCmd harán correr scripts antes y después de compartir un respaldo.
|
Nota: Mucha gente se confunde con estos parámetros. Los campos no pueden tratarse como si fueran prompts o shells. La sintaxis del shell no es interpretada aquí, de modo que si tiene múltiples comandos o scripts para ejecutar, póngalos en un solo script en el cliente, donde puedan ser ejecutados uno después del otro. |
Por último, la pestaña Schedule es donde uno establece cómo van a llevarse a cabo los respaldos completos e incrementales. Puede fijar esto o bien en el nivel por defecto en Edit Config, o bien puede nuevamente sobreimponer los valores host por host. Por defecto se mantiene solamente un respaldo completo y seis incrementales. Esto le proporciona una ventana de una semana de respaldos. El FullPeriod se fija a 6.97, lo que quiere decir que se hace un respaldo completo cada 7 días. IncrPeriod se fija a 0.97 lo que significa que todos los días se hará un respaldo incremental. La cuenta IncrKeepCnt se pone en 6 lo cual le da 6 días de incrementales y al día siguiente un respaldo completo. También se pueden fijar BlackoutPeriods, o momentos donde no se desea que se hagan respaldos. Todos los valores aquí se explican en la documentación, así que ¡a leer!
5.2. Agregar el cliente a la interfaz web
Lo siguiente es agregar el cliente y todas las configuraciones desde dentro de la interfaz web. Haga click en la pestaña Edit Hosts y luego en el botón Add. Complete el nombre del host que quiere respaldar, y luego bajo la sección User, ponga como el usuario a backuppc. Este necesita ser backuppc porque el respaldo es lanzado bajo esta identidad de usuario. De otra forma no funcionará. Cuando termine haga click en el botón de grabar, arriba. Haga click en el enlace Host Summary, a la izquierda, y deberá ver el nuevo host. Para empezar a configurar los parámetros del host, haga click sobre el nombre del host, y se abrirá una nueva sección al tope. Haga click en Edit Config en el extremo izquierdo superior bajo el nombre del host.
A partir de aquí, todo parámetro que establezca se sobreimpondrá a los valores por defecto, almacenándose en el archivo /etc/BackupPC/pc/host_name.pl. Haga click en el botón Xfer, y comience a agregar directorios bajo RsyncShareName. Bajo este parámetro en el área Include/Exclude, ingrese cualquier cosa que desee excluir en BackupFilesExclude. Cuando termine, recuerde hacer click en Save al tope de la página. Esto es todo para agregar un host. Si selecciona ese host, luego podrá arrancar y detener manualmente los respaldos para ver si funcionan.
Por defecto, BackupPC se despierta una vez por hora para ver si hay hosts encolados para respaldar. Para modificar esta conducta, mire bajo la pestaña de configuración de Server bajo Edit Config. Cambie WakeupSchedule según sus necesidades.
5.3. Volcado de bases de datos
Para incluir el vuelco de una base de datos en BackupPC en el host a respaldar, hay dos opciones. Una, escribir su propio script a correr en el host antes del respaldo. La otra, puede usar el script del proyecto AutoMySQLBackup que está en SourceForge para volcar sus bases de datos MySQL. Con un poco de edición del script, podrá fácilmente hacerlo funcionar para bases de datos de PostgreSQL también. Para empezar, descargue el script de SourceForge. Copie el script a alguna parte como /usr/local/bin en el host que desea respaldar. Yo generalmente renombro el script para reflejar el nombre del host para el cual se va a hacer el respaldo. Esto no es necesario, es únicamente por lógica. Pero sí hay que comprobar que el script sea ejecutable.
# scp automysqlbackup.sh.2.5 host_name:/usr/local/bin # ssh host_name # mv automysqlbackup.sh.2.5 mysql_hostname_dump # chmod +x mysql_hostname_dump
El script está muy bien documentado en lo que hace a las opciones. No deje de leer la documentación para comprender lo que hace el script. AutoMySQLBackup se conecta a las bases de datos que usted especifique y las respalda en /backups, le envía un e-mail si lo solicita, y también ejecuta pasos rotacionales para proporcionarle un conjunto de respaldos de las bases de datos.
Recuerde llenar los campos USERNAME, PASSWORD y los DBNAMES. Si quiere mail, configúrelo como explican las instrucciones en el script. Es muy fácil de configurar, así que cuando tenga las opciones correctamente, corra el script manualmente una vez en el host que va a respaldar. Podrá ver entonces si se creó el directorio /backups, y si el respaldo tuvo lugar o no.
# cd /usr/local/bin # ./mysql_hostname_dump ....miles de líneas de salida... o errores... arreglar si hace falta. # cd /backups # ll
Debe poder ver una estructura de directorios diarios, semanales y mensuales (daily, weekly, monthly) con todos los nombres de sus bases de datos en un directorio propio dentro de éstos. Puede navegar por ellos para localizar los archivos .sql.gz que son sus bases de datos.
5.4. Agregar DumpPreUserCmd al host BackupPC
Ahora que tiene el script de volcado físicamente instalado en el host, configure el DumpPreUserCmd en la interfaz web de BackupPC con el comando para hacer SSH al host que se va a respaldar, y ejecutar AutoMySQLBackup. Seleccione un host en la interfaz web, y luego elija la pestaña Edit Config en el extremo superior izquierdo. Elija la pestaña de BackupSettings y vaya bajo al sección User Commands. La primera línea es DumpPreUserCmd. Agregue la siguiente línea en esta sección.
$sshPath -q -x -l root $host /usr/local/bin/mysql_hostname_dump
Elija Save, al tope, y luego diríjase a la pestaña Xfer para el host. Agregue el directorio /backups al RsyncShareName, o de otro modo los respaldos nunca se copiarán fuera del host. Listo, ahora sus bases de datos MySQL generarán un vuelco antes del rsync de directorios de BackupPC. Como dijimos, puede editar fácilmente AutoMySQLBackup para convertirlo en un script AutoPostgreSQLBackup. Sólo reemplace toda la sintaxis de MySQL con comandos y opciones PostgreSQL.
6. Otras capacidades de BackupPC
Como se dijo, BackupPC puede respaldar recursos SMB, usar tar para respaldos, y archivar respaldos a otros tipos de medios. La documentación de BackupPC explica cada una de estas capacidades.
$Conf{XferMethod} = 'rsync'; The valid values are: . - '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.
Si quiere respaldar hosts Windows, querrá usar SMB, creando recursos compartidos en las máquinas Windows, o buscar en Internet cómo usar rsync y Cygwin en Windows. Esto está más allá del objeto de este artículo. Por lo demás, ¡diviértase respaldando sus máquinas!
7. Respaldando hosts Windows con autofs
Una forma alternativa de respaldar hosts Windows sería usar autofs, que es una herramienta para montar y desmontar automáticamente sistemas de archivos. Si busca hacer respaldos remotos, entonces ésta no es la forma para usted, ya que sería mejor usarla en redes locales confiables. Las passwords se almacenan en el servidor BackupPC en archivos. Si tiene PCs y servidores Windows internamente en sus redes, sin embargo, este método funciona muy bien porque no requiere instalación de software o clientes en las máquinas Windows. En su lugar, usa shares Samba en las máquinas Windows para montar automáticamente sistemas de archivo cuando se requiere.
7.1. Configurar autofs
El paquete autofs ya debe estar instalado en su servidor Linux. La primera cosa a hacer es agregar un archivo separado para manejar los hosts Windows, junto con las opciones que desea hacer pasar cuando se automonten hosts Windows. Abra el archivo /etc/auto.master y agréguelas.
# vim /etc/auto.master /windows /etc/auto.windows --timeout=30 --ghost
Estas opciones le dicen a autofs que use /windows como punto de montado, que obtenga todos los hosts autofs Windows del archivo /etc/auto.windows, usar un tiempo de timeout de 30 segundos, y crear directorios fantasma (vacíos) del punto de montado. Esto significa que luego de 30 segundos de inactividad sobre el punto de montado, se desmontará el share, y como los directorios vacíos todavía estarán allí, no se podrá borrarlos mientras no estén montados.
Luego, agregue un host al archivo auto.windows con las opciones apropiadas que necesite.
# vim /etc/auto.windows machinename -fstype=cifs,ro,credentials=/etc/.autofs.smbpasswd ://machinename/C\$
Esta línea significa montar machinename usando cifs con acceso de sólo lectura. Por lo común, probablemente no querrá otra cosa que acceso de sólo lectura, ya que sólo está respaldando archivos. El archivo clave almacena el nombre de usuario de Samba y password que tiene permiso de hacer el montado. Finalmente, use el disco C como punto de montado. Si tiene Windows instalado en otro drive, o tiene datos en otro drive, úselo.
Agregue el archivo de clave con las credenciales adecuadas necesarias para montar recursos de Samba. Probablemente no tenga que tener el nombre de dominio añadido, ya que debería funcionar igual sin él.
# vim /etc/.auto.smbpasswd username=DOMAIN/username password=password # chmod 600 /etc/.auto.smbpasswd
Eso es todo lo necesario para configurarlo. Reinicie el daemon autofs y trate de montar su recurso compartido ahora. Cuando navegue al directorio, tratará de montar automáticamente su recurso Samba en la máquina Windows. Mientras esté dentro del directorio montado, permanecerá montado. Apenas abandone el directorio, comenzará a correr el timeout de 30 segundos, y su share se desmontará solo.
# service autofs restart # cd /windows/machinename # mount //machinename/C$ on /windows/machinename type cifs (ro,mand)
7.2. Configurar BackupPC para usar host autofs
Agregue un host de la forma que ya ha estado haciéndolo dentro de la interfaz web de BackupPC. No hay muchas diferencias entre agregar hosts Linux normales y los hosts autofs Windows. Básicamente, la gran diferencia es que no necesitará usar SSH para acceder al host, ya que estará montando el sistema de archivos Windows localmente en BackupPC.
Luego de agregar el host, navegue a Edit Config->Xfer. Cambie los siguientes comandos de rsync:
RsyncClientCmd = $rsyncPath $argList RsyncClientRestoreCmd = $rsyncPath $argList
Ahora, bajo los nombres de recursos compartidos a respaldar, puede usar el mismo formato que con los servidores Linux normales a respaldar. Si quisiera respaldar un directorio con espacios en su nombre, escríbalos como los vea. Al sacar el + del final de $argList+ se trata de manejar mejor el escapado ya que esto es respaldo local, y no respaldo a través de SSH, al menos esto es lo que comprendo.
RsyncShareName = /windows/machinename/backup RsyncShareName = /windows/machinename/Documents and Settings
Esto debería ser todo. Ya debería empezar a ver sus directorios Windows siendo respaldados.