viernes, 24 de abril de 2009

Nuevo sistema operativo

Sin palabras.... seguro que es la sensación diaria de todos los compañeros de profesión.
¡Alf.... va por ti!


jueves, 9 de abril de 2009

Cliente FTP para linux en modo automático

Llevo toda la mañana tratando de configurar una tarea programada en un servidor Linux que envíe por FTP cada semana un fichero.

Se que es sencillo, porque lo he hecho en otra ocasión, pero me ha costado un triunfo localizar los comandos adecuados.

Creamos un fichero en el que guardaremos los comandos que queremos ejecutar con el cliente FTP casi tal-cual los escribiríamos en modo interactivo. En mi caso lo guardo con el nombre "comandos.ftp".
open ftp.servidor.com
user usuario clave
cd /directorio_remoto/
lcd /directorio_local/
put fichero
bye
Llamamos al cliente FTP con el siguiente comando:
ftp -n <comandos.ftp

Chuletilla - tar, split, cat

¿Como se hace?

Empaquetar y comprimir un directorio:

  • Incluyendolo en la estructura:
tar -cvzf archivo.tar.gz directorio
Con la opción "z" hacemos un comprimido (gz).
Sin ella, empaquetamos (tar).
  • Sin incluirlo:
cd directorio
tar -cvzf ../archivo.tar.gz *

Desempaquetar y descomprimir lo anterior:

  • En la ubicación del archivo:
tar -xvzf archivo.tar.gz
  • En otro directorio:
cd /directorio
tar -xvzf /ruta_de_nuestro_archivo/archivo.tar.gz

Cortar en trozos un fichero más grande:

split -b tamaño -d fichero_original nombre_fragmento.s
tamaño puede ser 100k, por ejemplo.
split -b 100m -d fichero.tar.gz fichero.tar.gz.s
Deberíamos haber obtenido unos cuantos fragmentos de 100 megas, con el formato fichero.tar.gz.s01, fichero.tar.gz.s02...

Unir los trozos de antes:

cat nombre_fragmento* > fichero_original
Muy macarra, ¿verdad?
cat fichero.tar.gz.s* > fichero.tar.gz

Por último, nunca es mala idea el asegurarnos de la integridad del fichero una vez reconstruido, mediante algo tan sencillo como comprara los valores de las firmas MD5 de ambos ficheros:
md5sum -b fichero.tar.gz > fichero.tar.gz.md5

Pasar un proceso a un segundo plano

Una de esas dudas eternas para cualquien novatillo en linux....

En ocasiones, podemos necesitar que un proceso que estamos ejecutando sobre nuestro terminal pase a un segundo plano (Background) de forma que nos permita continuar trabajando.

Imaginemos, por ejemplo, que hemos lanzado una compresión de gran tamaño:
tar -czf /datos/backup-2/archivo.tar.gz *
El sistema se quedará esperando a que el comando tar le devuelva el control del terminal.

Si en ese momento, pulsamos [ctrl+Z] detendremos el proceso en curso:
[1]+ Stopped tar -czf /datos/backup-2/archivo.tar.gz *
Seguidamente, usaremos el siguiente comando para continuar con el proceso en segundo plano:
bg
Con el comando "jobs", obtendremos un listado de los comandos que tenemos en proceso:
[1]+ Running tar -czf /datos/backup-2/archivo.tar.gz * &
Y con el siguiente comando volveremos a poner nuestro proceso en primer plano (foreground):
fg


No obstante, nunca está de más ser previsores y para ello, siempre podremos lanzar nuestro proceso directamente a un segundo plano, añadiendo al final el símbolo "&":
tar -czf /datos/backup-2/archivo.tar.gz * &