BackupPC Server | Tu servidor de backups en Linux Centos

BackupPC Server | Tu servidor de backups en Linux Centos

Los backups, esas copias que nadie recuerda tener hasta que se daña el disco del equipo llevándose toda tu información con el. Parece película de terror cierto? pero sucede muy a menudo, créeme. Hoy te mostrare como instalar y configurar tu propio BackupPC Server paso a paso en un servidor Linux Centos.

BackupPC que es?

BackupPC Server es un software de código abierto (opensource) que permite hacer copias disco a disco totalmente automáticas (o manuales forzadas por un usuario) y que cuenta con una interfaz web para su total administración. El código de este software esta programado en Perl y es multiplataforma permitiendo ejecutarlo en Linux, Solaris y Unix.

Dependiendo de su configuracion, puede usarse sin necesidad de instalar un cliente en los equipos.

Requisitos para instalar BackupPC Server

  • Linux Centos actualizado, recomiendo usarlo solo, sin otros servicios, para esta tarea
  • 1 disco (o arreglo de discos) para almacenar los backups, no hacerlo en el mismo disco del OS ya que degrada el rendimiento de ser posible
  • Conectividad a internet

BackupPC Server | Tu servidor de backups en Linux Centos

-Comenzamos deshabilitando selinux, algunos verán esto como un problema de seguridad, pero prefiero hacerlo para evitar errores “inexplicables”. Abrimos una consola y a partir de este momento la mayoría de este BackupPC tutorial sera desde la cuenta root de Linux Centos. Después de este cambio, reiniciamos nuestro servidor

vi /etc/selinux/config
SELINUX=disabled

Preparando un disco para BackupPC en Centos

-Verificamos cual es el disco que usaremos para almacenar los backups. En caso de que no vayas a usar un disco solo para esto, puedes saltarte este paso. Debes anotar el /dev del disco que se usara, normalmente tendrás uno con varias particiones que sera el de tu Linux Centos, entonces por default, el siguiente sera el que buscamos (/dev/sdb para este articulo)

fdisk -l

Debes tener cuidado en saber que disco es el que usaras para BackupPC Server
Debes tener cuidado en saber que disco es el que usaras para BackupPC Server

-Particionamos el disco creando una única partición que tome todo el espacio del disco o arreglo de discos

fdisk /dev/sdb

Creamos una partición en el disco para copias
Creamos una partición en el disco para copias

-Formateamos la partición del disco. Usaremos el formato ext4

mkfs.ext4 /dev/sdb1

Formateamos la partición con ext4
Formateamos la partición con ext4

-Creamos un directorio solo para las copias de BackupPC Server. Dentro de este directorio montaremos el disco ya formateado

mkdir /data
mount /dev/sdb1 /data

-Agregamos el disco y su punto de montaje a fstab, así cada vez que reiniciemos el servidor Linux Centos, este montara de forma automática

vi /etc/fstab
/dev/sdb1                /data                   ext4    defaults        0 0

Agregamos la partición a fstab para que se monte automáticamente al hacer boot Linux Centos
Agregamos la partición a fstab para que se monte automáticamente al hacer boot Linux Centos

-Verificamos que el disco este montado correctamente antes de continuar

df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/mapper/centos-root 13G 1,1G 12G 9% /
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6,8M 490M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/sda1 1014M 158M 857M 16% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/sdb1 7,8G 36M 7,3G 1% /data

Dependencias necesarias

-Instalamos dependencias. Puede que te de el impulso por instalar todo con un único comando yum, pero no, primero instalaremos el repositorio epel y después, solo después, las demás dependencias

yum install epel-release
yum install perl-CPAN gcc make samba* httpd wget bzip2 rrdtool rsync par2cmdline mlocate

-BackupPC Server depende de muchos módulos perl (ya que esta desarrollado en perl), a continuación instalaremos varios que necesitaremos

yum -y install "perl(Compress::Zlib)"
yum -y install "perl(Archive::Zip)"
yum -y install "perl(Digest::MD5)"
yum -y install "perl(version)"
yum -y install "perl(File::Listing)"
yum -y install "perl(CGI)"
yum -y install "perl(ModPerl::Registry)"

-Necesitamos un modulo mas, pero este no se encuentra en formato rpm, por lo que lo descargaremos y compilaremos desde su código fuente en el sitio CPAN

wget -c http://search.cpan.org/CPAN/authors/id/C/CB/CBARRATT/BackupPC-XS-0.57.tar.gz

-Descomprimimos el modulo y entramos a su directorio

tar xzvf BackupPC-XS-0.57.tar.gz
cd BackupPC-XS-0.57

-Compilamos e instalamos el modulo

perl Makefile.PL
make
make install

Usuario BackupPC

-BackupPC utiliza una cuenta de usuario para su funcionamiento, es decir, no se ejecutara desde la cuenta root por lo cual crearemos una cuenta

adduser backuppc
passwd backuppc

-Nos devolvemos a nuestro directorio home (el de root) y damos permisos al directorio data a la nueva cuenta creada

cd
chown backuppc.backuppc /data

Descargamos BackupPC

-Descargamos BackupPC Server desde su URL oficial. Siempre verifica que sea la ultima versión disponible

wget -c https://sourceforge.net/projects/backuppc/files/backuppc/4.2.1/BackupPC-4.2.1.tar.gz

Verifica siempre cual es la ultima versión de BackupPC Server
Verifica siempre cual es la ultima versión de BackupPC Server

-Descomprimimos el archivo y entramos a su directorio

tar xzvf BackupPC-4.2.1.tar.gz
cd BackupPC-4.2.1

Instalamos BackupPC Server

-Configuramos BackupPC. La mayoría de los parámetros son correctos con sus valores por default. En el caso de que no necesitemos cambiar el valor, presionamos Enter

perl configure.pl

Is this a new installation or upgrade for BackupPC? If this is
an upgrade please tell me the full path of the existing BackupPC
configuration file (eg: /etc/BackupPC/config.pl). Otherwise, just
hit return.

–> Full path to existing main config.pl []?

I found the following locations for these programs:

bzip2 => /usr/bin/bzip2
cat => /usr/bin/cat
df => /usr/bin/df
gtar/tar => /usr/bin/gtar
gzip => /usr/bin/gzip
hostname => /usr/bin/hostname
nmblookup => /usr/bin/nmblookup
par2 => /usr/bin/par2
perl => /usr/bin/perl
ping => /usr/bin/ping
ping6 => /usr/sbin/ping6
rrdtool => /usr/bin/rrdtool
rsync => /usr/bin/rsync
rsync_bpc => /usr/bin/rsync_bpc
sendmail => /usr/sbin/sendmail
smbclient => /usr/bin/smbclient
split => /usr/bin/split
ssh/ssh2 => /usr/bin/ssh

–> Are these paths correct? [y]?

Please tell me the hostname of the machine that BackupPC will run on.

–> BackupPC will run on host [cen7.drivemeca.com]?

BackupPC should run as a dedicated user with limited privileges. You
need to create a user. This user will need read/write permission on
the main data directory and read/execute permission on the install
directory (these directories will be setup shortly).

The primary group for this user should also be chosen carefully.
The data directories and files will have group read permission,
so group members can access backup files.

–> BackupPC should run as user [backuppc]?

Please specify an install directory for BackupPC. This is where the
BackupPC scripts, library and documentation will be installed.

–> Install directory (full path) [/usr/local/BackupPC]? /home/backuppc

Please specify a data directory for BackupPC. This is where all the
PC backup data is stored. This file system needs to be big enough to
accommodate all the PCs you expect to backup (eg: at least several GB
per machine).

–> Data directory (full path) [/data/BackupPC]?

BackupPC has SCGI and CGI perl interfaces that run under Apache. You need
to pick which one to run.

For SCGI, Apache uses the scgi_mod module to communicate with BackupPC_Admin_SCGI,
which handles the requests. This allows Apache to run as a different user as
backuppc. To use SCGI you need to set SCGIServerPort to any spare
non-privileged TCP port number. A negative value disables SCGI.

Important security warning!! The SCGIServerPort must not be accessible by
anyone untrusted. That means you can’t allow untrusted users access to the
BackupPC server, and you should block the SCGIServerPort TCP port from
network access.

The traditional alternative is to use CGI. In this case, an executable needs
to be installed Apache’s cgi-bin directory. This executable needs to run as
set-uid backuppc, or it can be run under mod_perl with Apache
running as user backuppc.

–> SCGI port (-1 to disable) [-1]?
–> CGI bin directory (full path, or empty for no CGI) []? /var/www/cgi-bin

BackupPC’s CGI and SCGI script need to display various PNG/GIF
images that should be stored where Apache can serve them. They
should be placed somewhere under Apache’s DocumentRoot. BackupPC
also needs to know the URL to access these images. Example:

Apache image directory: /var/www/htdocs/BackupPC
URL for image directory: /BackupPC

The URL for the image directory should start with a slash.

–> Apache image directory (full path, or empty for no S/CGI) []? /var/www/icons
–> URL for image directory (omit http://host; starts with ‘/’, or empty for no S/CGI) []? /icons

Ok, we’re about to:

– install the binaries, lib and docs in /home/backuppc
– create the data directory /data/BackupPC
– optionally install the cgi-bin interface
– create/update the config.pl file /etc/BackupPC/config.pl

–> Do you want to continue? [y]?
Created /home/backuppc/bin
Created /home/backuppc/share
Created /home/backuppc/share/doc
Created /home/backuppc/share/doc/BackupPC
Created /home/backuppc/lib
Created /home/backuppc/lib/BackupPC
Created /home/backuppc/lib/BackupPC/CGI
Created /home/backuppc/lib/BackupPC/Config
Created /home/backuppc/lib/BackupPC/Lang
Created /home/backuppc/lib/BackupPC/Storage
Created /home/backuppc/lib/BackupPC/Xfer
Created /home/backuppc/lib/BackupPC/Zip
Created /home/backuppc/lib/Net
Created /home/backuppc/lib/Net/FTP
Created /var/www/icons
Created /data/BackupPC
Created /data/BackupPC/pool
Created /data/BackupPC/cpool
Created /data/BackupPC/pc
Created /etc/BackupPC
Created /var/log/BackupPC
Created /var/run/BackupPC
Installing binaries in /home/backuppc/bin
Installing library in /home/backuppc/lib
Installing images in /var/www/icons
Making systemd and init.d scripts
Making Apache configuration file for suid-perl
Installing docs in /home/backuppc/share/doc/BackupPC
Installing cgi script BackupPC_Admin in /var/www/cgi-bin
Installing config.pl and hosts in /etc/BackupPC

Ok, it looks like we are finished. There are several more things you
will need to do:

– Browse through the config file, /etc/BackupPC/config.pl,
and make sure all the settings are correct. In particular,
you will need to set $Conf{CgiAdminUsers} so you have
administration privileges in the CGI interface.

– Edit the list of hosts to backup in /etc/BackupPC/hosts.

– Read the documentation in /home/backuppc/doc/BackupPC.html.
Please pay special attention to the security section.

– Verify that the CGI script BackupPC_Admin runs correctly. You might
need to change the permissions or group ownership of BackupPC_Admin.
If this is an upgrade and you are using mod_perl, you will need
to restart Apache. Otherwise it will have stale code.

– BackupPC should be ready to start. Don’t forget to run it
as user backuppc! The installation also contains
a systemd/backuppc.service script that can be installed so
that BackupPC can auto-start on boot. This will also enable
administrative users to start the server from the CGI interface.
See systemd/README.

Enjoy!

-Copiamos el script para iniciar el servicio

cp /root/BackupPC-4.2.1/systemd/init.d/linux-backuppc /etc/init.d/backuppc

-Habilitamos el servicio para ejecutarse automáticamente al hacer boot nuestro servidor Linux Centos

systemctl enable backuppc

Configuramos BackupPC Server

-Entramos al directorio de configuracion de BackupPC para crearnos un perfil default de backups para los equipos

cd /etc/BackupPC/

-El archivo de configuracion de BackupPC Server es bastante extenso y nos da muchas posibilidades. Debajo veras los parámetros que te recomiendo modificar.

Ya en producción puedes jugar con estos para cada equipo dependiendo de tus necesidades

vi config.pl
$Conf{MaxBackupPCNightlyJobs} = 4;
$Conf{MaxOldLogFiles} = 5;
$Conf{DHCPAddressRanges} = [
{
ipAddrBase => '192.168.5',
first => 2,
last => 254,
},
];
$Conf{ServerInitdPath} = '/etc/init.d/backuppc';
$Conf{ServerInitdStartCmd} = '$sshPath -q -x -l root $serverHost $serverInitdPath start < /dev/null >& /dev/null';
$Conf{FullKeepCnt} = 4;
$Conf{FullAgeMax} = 30;
$Conf{RestoreInfoKeepCnt} = 5;
$Conf{ArchiveInfoKeepCnt} = 5;
$Conf{XferMethod} = 'rsyncd';
$Conf{RsyncShareName} = 'docs';
$Conf{RsyncdUserName} = 'backup';
$Conf{RsyncdPasswd} = 'contraseña';
$Conf{ArchiveComp} = 'bzip2';
$Conf{PingMaxMsec} = 80;
$Conf{MaxOldPerPCLogFiles} = 5;
$Conf{EMailAdminUserName} = 'usuario@email.com';
$Conf{EMailUserDestDomain} = '@email.com';
$Conf{EMailHeaders} = <<EOF;
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
EOF
$Conf{CgiAdminUsers} = 'drivemeca pepito';
$Conf{CgiURL} = 'http://192.168.5.103/cgi-bin/BackupPC_Admin';
$Conf{CgiDateFormatMMDD} = 0;

-Modificamos el archivo hosts de BackupPC. Cada equipo que queramos sacarle copias, debe estar en este archivo y ser “visible” desde nuestro servidor

Significado de las 4 columnas

  1. Nombre del pc
  2. Como accederemos a este pc. 0 es que tiene una ip fija y 1 es que tiene una ip dinámica (DHCP)
  3. Administrador de este backup, por lo general, el usuario que usa este equipo
  4. Otro administrador, por lo general, el administrador del servidor BackupPC, el que vera todos los backups de todos los equipos

vi hosts
#nombre tipo administrador, otro administrador
pc1 0 pepito cabrera
pc2 1 pepe cabrera

-Modificamos el archivo hosts de nuestro Centos Linux y agregamos los equipos que tengan ip fija (static)

vi /etc/hosts
192.168.5.10 pc1

-Creamos un link simbólico para la interfaz web de BackupPC

ln -s /var/www/cgi-bin/ /var/www/html/BackupPC

-Creamos un grupo de administradores. Estos usuarios serán los que tendrán acceso a todas las opciones en la interfaz web de BackupPC Server (un usuario común no necesita ser administrador)

cd /var/www/cgi-bin/
vi group
admin: drivemeca,admin2

-Por seguridad, creamos un archivo htaccess para que sea obligatorio un usuario con contraseña para entrar a la interfaz web

vi .htaccess
AuthGroupFile /var/www/cgi-bin/group
AuthUserFile /var/www/cgi-bin/.htpasswd
AuthType basic
AuthName "access"
require valid-user

-Creamos las contraseñas para las cuentas de administradores

htpasswd -cm /var/www/cgi-bin/.htpasswd cabrera
htpasswd -m /var/www/cgi-bin/.htpasswd admin2

-Verificamos los archivos y sus permisos en nuestro directorio cgi-bin

ls -la
total 16
drwxr-xr-x. 2 root root 75 ago 16 19:30 .
drwxr-xr-x. 5 root root 46 ago 16 18:37 ..
-r-sr-xr--. 1 backuppc backuppc 3966 ago 16 18:37 BackupPC_Admin
-rw-r--r--. 1 root root 25 ago 16 19:25 group
-rw-r--r--. 1 root root 129 ago 16 19:29 .htaccess
-rw-r--r--. 1 root root 46 ago 16 19:30 .htpasswd

Configuramos Apache

-Modificamos la configuracion de apache

vi /etc/httpd/conf/httpd.conf
User backuppc
Group backuppc
ServerAdmin backup@drivemeca.com

Options FollowSymLinks
AllowOverride all

DirectoryIndex index.html index.htm index.html.var
Alias /icons /var/www/icons
<Directory "/var/www/icons"/>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<Directory /var/www/cgi-bin/>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
AllowOverride Indexes AuthConfig
Order deny,allow
AuthName "Backup Admin"
AuthType Basic
AuthUserFile /var/www/cgi-bin
Require valid-user
</Directory>

IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable

-Verificamos la configuracion de apache

apachectl configtest
Syntax OK

-Activamos el servicio de Apache para que inicie automáticamente al hacer boot nuestro Linux Centos. Lo iniciamos seguidamente y verificamos su estado

systemctl enable httpd
systemctl restart httpd
systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since jue 2018-08-16 20:02:47 -05; 1min 42s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 14362 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Main PID: 14388 (/usr/sbin/httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─14388 /usr/sbin/httpd -DFOREGROUND
├─14389 /usr/sbin/httpd -DFOREGROUND
├─14390 /usr/sbin/httpd -DFOREGROUND
├─14391 /usr/sbin/httpd -DFOREGROUND
├─14392 /usr/sbin/httpd -DFOREGROUND
└─14393 /usr/sbin/httpd -DFOREGROUND

-Creamos el directorio para los archivos pl de configuracion de cada equipo que agreguemos a nuestro BackupPC Server

cd /etc/BackupPC
mkdir pc

-Hacemos una copia del archivo de configuracion básica con el nombre de cada equipo a sacarle copias. A partir de esta configuracion personalizaremos horarios, directorios a sacarle copia, etc

cp config.pl pc/pc1.pl
cp config.pl pc/pc2.pl

-Damos permisos de usuario y grupo backuppc de forma recursiva

chown -R backuppc.backuppc /etc/BackupPC/

Configuración de samba

-Para los equipos Microsoft Windows con ip dinámica (DHCP) usaremos samba para buscarlos en la LAN. Modificamos el archivo de configuracion smb.conf

cd /etc/samba
vi smb.conf
[global]
workgroup = test
netbios name = cen7
server string = cen7
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
unix password sync = Yes
log file = /var/log/samba/%m.log
max log size = 0
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
os level = 70
local master = no
preferred master = no
domain master = no
dns proxy = No
hosts allow = 192.168. 127.
password server = None
security = user

-Activamos el servicio de samba para que ejecute automáticamente al hacer boot nuestro servidor Linux, iniciamos el servicio y verificamos este ejecutándose correctamente

systemctl enable smb
systemctl start smb
systemctl status smb
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
Active: active (running) since vie 2018-08-17 12:18:31 -05; 2s ago
Main PID: 5725 (smbd)
Status: "smbd: ready to serve connections..."
CGroup: /system.slice/smb.service
├─5725 /usr/sbin/smbd --foreground --no-process-group
├─5727 /usr/sbin/smbd --foreground --no-process-group
├─5728 /usr/sbin/smbd --foreground --no-process-group
└─5729 /usr/sbin/smbd --foreground --no-process-group

Instalamos una versión actual de rsync-bpc

-El paquete de rsync-bpc que esta en los repositorios de Centos es viejo, por lo cual no nos funcionara. Lo eliminamos

rpm -e rsync-bpc

-Descargamos la ultima versión de este paquete directo de github, lo descomprimimos, compilamos e instalamos

wget -c https://github.com/backuppc/rsync-bpc/releases/download/3.0.9.12/rsync-bpc-3.0.9.12.tar.gz
tar xzvf rsync-bpc-3.0.9.12.tar.gz
cd rsync-bpc-3.0.9.12
./configure
make
make install

-Nos creamos un link simbólico

ln -s /usr/local/bin/rsync_bpc /usr/bin/rsync_bpc

-Verificamos que lo podamos ejecutar con nuestro PATH y de paso, su versión

rsync_bpc --version
rsync_bpc version 3.0.9.12 protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, no ACLs, xattrs, iconv, symtimes

rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.

Ejecutamos BackupPC Server

-Creamos un directorio para el pid de BackupPC Server, lo ejecutamos y verificamos su proceso

mkdir /var/run/BackupPC
chown backuppc.backuppc /var/run/BackupPC/
systemctl start backuppc
systemctl status backuppc
● backuppc.service - SYSV: Starts and stops the BackupPC server
Loaded: loaded (/etc/rc.d/init.d/backuppc; bad; vendor preset: disabled)
Active: active (running) since vie 2018-08-17 12:53:10 -05; 1min 13s ago
Docs: man:systemd-sysv-generator(8)
Process: 9925 ExecStop=/etc/rc.d/init.d/backuppc stop (code=exited, status=0/SUCCESS)
Process: 9936 ExecStart=/etc/rc.d/init.d/backuppc start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/backuppc.service
└─9947 /usr/bin/perl /home/backuppc/bin/BackupPC -d

Reglas de firewall en Linux Centos

-Nos creamos dos reglas en el firewall de Linux Centos, para conexiones http y https. Reiniciamos el servicio firewalld para que tomen efecto

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
systemctl restart firewalld

BackupPC web interface

-Abrimos un browser en otro pc que tenga acceso a nuestro servidor Linux Centos y navegamos al URL http://IP-servidor-BackupPC/cgi-bin/BackupPC_admin Ingresamos con una de las cuentas administrador creadas en pasos anteriores. La pagina web es sencilla y en este momento, recién instalado, no nos dará mucha información, esto cambiara en la medida que comiencen a realizarse las copias

La web interface de BackupPC es sencilla
La web interface de BackupPC es sencilla

-A la izquierda veremos una serie de opciones. Si damos click a Host Summary veremos un listado de las copias realizadas junto con los equipos agregados al pool de copias

Host Summary nos dará información de las copias de los equipos
Host Summary nos dará información de las copias de los equipos

-Al darle click al nombre de un equipo veremos mas info sobre el. Aquí podemos ver sus copias, iniciar de forma manual un backup, etc

La vista por equipo nos da muchas opciones
La vista por equipo nos da muchas opciones

-Una opción muy útil, si no quieres hacerlo via linea de comandos es Edit Config. Esta opción te permite cambiar la configuracion de backup para un equipo

En Edit Config podemos cambiar la configuracion de backup de un equipo
En Edit Config podemos cambiar la configuracion de backup de un equipo

Ya tenemos nuestro servidor de backups en Linux Centos, el siguiente paso es configurar los clientes para poder tomarles copias

Como pudiste leer, BackupPC Server es una formidable opción opensource desarrollada en Perl con una variedad de opciones que nos permitirá tener copias completas, incrementales o manuales de los equipos en nuestra red. Ya lo usas, que tal te ha parecido este BackupPC tutorial en español, te espero aquí debajo en los comentarios

Satisfech@ con el articulo, hazme una donación, no importa la cantidad, la intención es lo que vale, dale click a este botón

Comparte este articulo opensource en tus redes sociales (compartir es sexy) por medio de los botones de redes sociales para que otros lo conozcan y apoyes mi blog.

Ademas, no olvides escribirme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.

BackupPC Server | Tu servidor de backups en Linux Centos
Te gusto, vota por este post

Evangelizador del opensource. Ataco el stress con un videojuego o viajando en mi motocicleta.

Escribe tu comentario

Please Login to comment
  Suscribete  
Notificación de