Entendamos cómo se usa la linea de comandos en Linux / UNIX
Resumen
Conexión al servidor
$ ssh -l usuario www.servidor.com
Construir directorios
$ mkdir backs
$ mkdir backs/2015
$ mkdir backs/2015/01
Opción -p
$ mkdir -p backs/2015/01
en el servidor de backups
$ ssh -l usuario www.servidor.com
Password for usuario@www.servidor.com:
$ mkdir -p backs/2015/01
$ mkdir -p backs/2015/02
$ mkdir -p backs/2015/03
...
$ mkdir -p backs/2018/12
foreach en tcsh
$ foreach i (01 02 03 04 05 06 07 08 09 10 11 12)
$ mkdir -p backs/2015/$i
$ mkdir -p backs/2016/$i
$ mkdir -p backs/2017/$i
$ mkdir -p backs/2018/$i
$ end
$ foreach j (2015 2016 2017 2018)
$ foreach i (01 02 03 04 05 06 07
08 09 10 11 12)
$ mkdir -p backs/$j/$i
$ end
$ end
Comando date, uso de “`” y variables de sesión
$ date +%Y.%m.%d
2015.05.16
$ setenv FECHA `date +%Y.%m.%d`
$ setenv ANHO `date +%Y`
$ setenv MES `date +%m`
$ echo $FECHA
2015.05.19
$ echo $ANHO
2015
$ echo $MES
05
crontab, Script que crea los directorios
~/bin/crear_backdirs.sh
#!/bin/tcsh
setenv ANHO `date +%Y`
foreach MES (01 02 03 04 05 06 07 08 09 10 11 12)
mkdir -p ~/backs/$ANHO/$MES
end
crontab, Campos del crontab
- minute 0-59
- hour 0-23
- day of month 1-31
- month 1-12 (or names, see below)
- day of week 0-7 (0 or 7 is Sun, or use names)
$ crontab -e
0 0 1 1 * ~/bin/crear_backdirs.sh
PROBLEMA RESUELTO (en el servidor de backups)
.
└── 2015
├── 01
├── 02
├── 03
├── 04
├── ...
└── 12
Cómo se hace en el servidor de bases de datos
$ pg_dump -c -U 652_gramo webpactum > 2015.05.16-webpactum.dump
$ bzip2 2015.05.16-webpactum.dump
$ scp -P 35 2015.05.16-webpactum.dump.bz2 usuario@www.servidorbackups.com:~/backs/2015/05
Password for usuario@skinait.com:
2015.05.16-webpactum.dump.bz2 61% 416KB 165.1KB/s
...
...
$
LISTO!!!
Mi primera vez (la repetición de la repetidera)
$ pg_dump -c -U 652_gramo webpactum > 2015.05.16-webpactum.dump
$ bzip2 2015.05.16-webpactum.dump
$ scp -P 35 2015.05.16-webpactum.dump.bz2 usuario@www.servidorbackups.com:~/backs/2015/05
Password for usuario@skinait.com:
2015.05.16-webpactum.dump.bz2 100% 416KB 165.1KB/s 00:01 ETA
$ pg_dump -c -U 652_gramo webdemo > 2015.05.16-webdemo.dump
$ bzip2 2015.05.16-webdemo.dump
$ scp -P 35 2015.05.16-webdemo.dump.bz2 usuario@www.servidorbackups.com:~/backs/2015/05
Password for usuario@skinait.com:
2015.05.16-webdemo.dump.bz2 100% 416KB 165.1KB/s 00:01 ETA
$ pg_dump -c -U 652_gramo webalaken > 2015.05.16-webalaken.dump
$ bzip2 2015.05.16-webalaken.dump
$ scp -P 35 2015.05.16-webalaken.dump.bz2 usuario@www.servidorbackups.com:~/backs/2015/05
Password for usuario@skinait.com:
2015.05.16-webalaken.dump.bz2 82% 416KB 165.1KB/s 00:01 ETA
Cómo se hace usando variables y “`”
$ setenv FECHA `date +%Y.%m.%d`
$ setenv ANHO `date +%Y`
$ setenv MES `date +%m`
$ setenv BDNAME webpactum
$ pg_dump -c -U 652_gramo $BDNAME > {$FECHA}-{$BDNAME}.dump
$ bzip2 {$FECHA}-{$BDNAME}.dump
$ scp -P 35 {$FECHA}-{$BDNAME}.dump.bz2 usuario@www.servidorbackups.com:~/backs/$ANHO/$MES
Segundo intento (primer paso a la automatización)
$ setenv BDNAME webpactum
$ pg_dump -c -U 652_gramo {$BDNAME} > {$FECHA}-{$BDNAME}.dump
$ bzip2 {$FECHA}-{$BDNAME}.dump
$ scp -P 35 {$FECHA}-{$BDNAME}.dump.bz2 usuario@www.servidorbackups.com:~/backs/{$MES}/{$DIA}
Password for usuario@skinait.com:
2015.05.16-webpactum.dump.bz2 100% 416KB 165.1KB/s 00:04
$ setenv BDNAME webdemo
$ pg_dump -c -U 652_gramo {$BDNAME} > {$FECHA}-{$BDNAME}.dump
$ bzip2 {$FECHA}-{$BDNAME}.dump
$ scp -P 35 {$FECHA}-{$BDNAME}.dump.bz2 usuario@www.servidorbackups.com:~/backs/{$MES}/{$DIA}
Password for usuario@skinait.com:
2015.05.16-webdemo.dump.bz2 100% 416KB 165.1KB/s 00:05
$ setenv BDNAME webalaken
$ pg_dump -c -U 652_gramo {$BDNAME} > {$FECHA}-{$BDNAME}.dump
$ bzip2 {$FECHA}-{$BDNAME}.dump
$ scp -P 35 {$FECHA}-{$BDNAME}.dump.bz2 usuario@www.servidorbackups.com:~/backs/{$MES}/{$DIA}
Password for usuario@skinait.com:
2015.05.16-webalaken.dump.bz2 61% 416KB 165.1KB/s 00:03 ETA
Cómo se hace (uso de alias para simplificar)
Al hacer el llamado de:
$ hacerbacks webpactum
webpactum se convierte en \!:1
Configuro los alias en el archivo
~/.tcshrc
alias backupbd "pg_dump -c -U 652_gramo {\!:1} > {`date +%Y.%m.%d`}-{\!:1}.dump"
alias comprimabk “bzip2 {`date +%Y.%m.%d`}-{\!:1}.dump”
alias subirbk "scp -P 35 {`date +%Y.%m.%d`}-{\!:1}.dump.bz2 usuario@www.servidorbackups.com:~/backs/{`date +%Y`}/{`date +%m`}"
alias hacerbacks "backupbd {\!:1}; comprimabk {\!:1}; subirbk {\!:1};"
tercer intento, segundo paso a la automatización
$ hacerbacks webpactum
Password for usuario@skinait.com:
2015.05.16-webpactum.dump.bz2 100% 416KB 165.1KB/s 00:01 ETA
$ hacerbacks webdemo
Password for usuario@skinait.com:
2015.05.16-webdemo.dump.bz2 100% 416KB 165.1KB/s 00:01 ETA
$ hacerbacks webalaken
Password for usuario@skinait.com:
2015.05.16-webalaken.dump.bz2 25% 416KB 165.1KB/s 00:01 ETA
Evitémonos la palabra clave (llaves publica-privada para ssh)
$ ssh-copy-id usuario@servidor.com
Evitémonos la palabra clave, llaves publica-privada para ssh, A la antigua
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/gramo/.ssh/id_rsa): /home/gramo/.ssh/id_rsa_skina
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/gramo/.ssh/id_rsa_skina.
Your public key has been saved in /home/gramo/.ssh/id_rsa_skina.pub.
The key fingerprint is:
bf:e8:98:63:87:7f:30:77:9b:c7:94:88:37:3e:6a:0f gramo@localhost
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| |
| S . . . |
| o.o = o |
| . +E+ * |
| +o..oo= o |
| .o=+ooo.o |
+-----------------+
Evitémonos la palabra clave, llaves publica-privada para ssh, A la antigua
Se copia el contenido de
id_rsa_skina.pub
En el servidor de backups al final del archivo
~/.ssh/authorized_keys
Ya se puede automatizar
Script para hacer el trabajo ~/bin/hacerbacks.sh
#!/bin/tcsh
hacerbacks webpactum
hacerbacks webdemo
hacerbacks webalaken
$ crontab -e
0 0 * * * ~/bin/hacerbacks.sh
Hoy en día
Conclusiones
- UNIX permite automatizar todas las actividades de administración
- El adm. debe conocer
- Los comandos disponibles
- La forma en que interactuan
- El mecanismo de automatización
- El trabajo del administrador UNIX es:
- Automatizar procesos
- Verificar bitácoras
Ricardo Naranjo Faccini
Desarrollador WWWNació en Barranquilla, Atl, Colombia el 14 de enero de 1971
- Magíster en Ingeniería de Sistemas y Computación de la Universidad de Los Andes 1998
- Ingeniero Civil de la Universidad de Los Andes 1995
- Diplomado en docencia en Ingeniería de la Pontificia Universidad Javeriana 2008
- Gerente de la firma Skina IT Solutions, su gestión ha llevado a la empresa al nivel de exportación de software. Experto en calidad en el desarrollo de software con énfasis en el uso de herramientas libres orientadas hacia WWW.
- CTO de AuthorsGlobe, empresa participante en el MIT 100K, elegida como parte del "TOP 10" entre 300 proyectos presentados en este concurso del Massachussets Institute of Technology MIT.
- Durante el periodo 2004-2005 se desempeñó como Gerente de desarrollo de negocios NOVELL en Nexsys de Colombia.
- Ejerce docencia como catedrático en la Universidad Javeriana, al igual que lo ha realizado en la Universidad de Los Andes, Universidad de Manizales y Universidad autónoma de Bucaramanga.
- Comprometido con la divulgación del software libre y su aplicación en Colombia, ha dictado más de 60 conferencias en todo el país, co-fundador de LinuxCol, la primera comunidad de usuarios de Linux en Colombia.
- Colaborador del grupo ACIS-Linux.