Eliminar archivos en subdirectorios recursivamente con Ubuntu

Scripts, Ubuntu No hay Comentarios »

Ya llevaba yo un tiempo queriendo estandarizar la eliminación de ficheros con un tipo de extensión a partir de un directorio padre. Hasta ahora y por las prisas lo realizaba con un script personalizado para cada directorio eliminando ficheros con extensión .enc.

Estos ficheros son el resultado de encriptar backups de bases de datos antes de enviarlas por Internet para almacenarlas fuera del edificio y así garantizar la recuperación ante un desastre que afectase al CPD.

Bueno, el caso es que despues de encriptar los ficheros de base de datos se quedaban en varios directorios y subdirectorios los ficheros backup_mysql…….tar.gz.enc y había que eliminarlos poco mas o menos que de forma personalizada ya que esos ficheros después de enviados al sitio remoto no me sirven de nada en local salvo para ocupar espacio.

Dedicando un poco de tiempo a estos comandos, sobre todo al maravilloso find es posible hacer todo esto en una sola linea de comando. Para mi que aún renqueo con los comandos de linux es todo un hallazgo.

El comando se debe ejecutar en el directorio de interés. “find” por naturaleza se mueve recursivamente, así que descenderá a todos los directorios desde el original, borrando los archivos de la extensión en cuestión.

He conseguido llegar a dos comandos que realizan la misma tarea:

  • $ find ./directorioinicial/ -name *.enc -type f -print | xargs /bin/rm -f

el segundo mas simple encontrado por ahí googleando:

  • $ find -name “*.enc” -exec rm {} \;

Aquí queda de apunte para que a alguien le resulte mas sencillo de averiguar.

Para comprobar sobre que ficheros va a actuar solo hay que cambiar el comando “rm” por “ls”.

Matar procesos zombie en Ubuntu

Ubuntu 1 Comentario »

Hay una forma de matar los procesos zombie muy sencilla, para ello primero hay que detectarlo y suele ser al iniciar sesión en un servidor que nos da un mensaje indicándolo o a través del comando top.

Los procesos zombies pueden ser identificados en la salida por pantalla del comando de Unix ps por la presencia de una Z en la columna de estado. Por ello para poder encontrar cual es el proceso ejecutamos el comando:

$ sudo ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]‘

y para eliminarlo:

$ sudo kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]‘ | awk ‘{print $2}’`

Problema de codificación de tildes, eñes y otros caracteres en Ubuntu.

Ubuntu No hay Comentarios »

Para pasar la codificación de caracteres de internacional a europeo hay que seguir unos sencillos pasos que me ha costado llegar a ellos ya que suelo trabajar con UTF8 pero por una serie de errores que me daba el rsync al hacer una copia de backup he tenido que cambiarlo.

Editamos el el fichero:

$ sudo vi /var/lib/locales/supported.d/local

Añade al final esto:

es_ES.ISO-8859-15 ISO-8859-15

Luego escribe en la consola:

$ sudo dpkg-reconfigure locales

$ sudo vi /etc/environment

borras el LANG si existe y pones:

LANG="es_ES.ISO8859-15"

LANGUAGE="es_ES:es:en_GB:en"

Reinicia para que los cambios surtan efecto.

¿Cómo se habilita el acceso remoto a MySQL Database Server en Ubuntu?

Ubuntu No hay Comentarios »

El acceso remoto al servidor de base de datos MySQL está deshabilitado de forma predeterminada por razones de seguridad. Sin embargo, a veces es necesario proporcionar acceso remoto al servidor de base de datos de casa o de un servidor web.

Inicio de sesión mediante SSH
En primer lugar, inicio de sesión sobre ssh al MySQLservidor remoto de base de datos:
$ ssh usuario@servidordestino

Editar archivo my.cnf
Una vez conectado le necesita para editar el MySQL configuración de servidor de archivos my.cnf utilizando por ejemplo un editor de texto como vi.
Está situado en la ubicación de /etc/mysql/my.cnf

Para editar /etc/my.cnf, ejecuta:
$ vi /etc/my.cnf

Localiza la línea en [mysqld]
Asegúrate de que está comentada o quitala y se añade el siguiente línea:

bind-address=IP-DE-TU-SERVIDOR

Guardar y cerrar el archivo
Reinicia el servidor de mysql, escribe:
$ /etc/init.d/mysql restart

Otorgar acceso a la dirección IP remota
Conectarse al servidor de mysql:
$ mysql -u root -p mysql

Conceder acceso a una base de datos existente
Vamos a suponer que siempre se realiza la conexión desde la IP remota 192.168.1.20 para base de datos denominada webdb para usuario webadmin. Para otorgar acceso a esta dirección IP escribe el siguiente comando en mysql > :

mysql> update db set Host='192.168.1.20' where Db='webdb';
mysql> update user set Host='192.168.1.20' where user='webadmin';
mysql> exit

Abrir puerto 3306
Es necesario abrir el puerto TCP 3306 usando reglas de iptables.

Podemos permitir el acceso general:
$/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

Permitirlo solo desde la IP 172.31.2.28
$/sbin/iptables -A INPUT -i eth0 -s 172.31.2.28 -p tcp --destination-port 3306 -j ACCEPT

O desde una subred 192.168.1.0/24
$/sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT

Salvamos las reglas nuevas
$service iptables save

Probamos la conexión
$ mysql -u webadmin –h 49.132.5.68 –p

  • -u webadmin: webadmin es el nombre de usuario de MySQL
  • -h IP o el nombre de host: 49.132.5.68 es la dirección IP del servidor MySQL o nombre de host (FQDN)
  • -p: solicitar contraseña

o mediante telnet
$ telnet 49.132.5.68 3306

WP Theme & Icons originales por N.Design Studio.
Aviso Legal Entradas RSS Comentarios RSS Acceder