Copia con exclusiones

Imaginemos que tenemos un directorio con decenas de miles de ficheros. Imaginemos ahora que necesitamos copiarlos casi todos, a otro directorio. ¿Cómo conseguimos, mediante un único comando, realizar la copia de todos los ficheros excepto los que no necesitamos copiar?

Una solución sería, estando ubicados en el directorio de origen (que contiene los ficheros) con la siguiente línea:

ls | egrep -v ‘^excepcion1|^excepcion2|^excepcion3’ | xargs -i cp {} /dest_folder/

En esta línea, excepcion1 corresponde con el nombre de un fichero que no queremos copiar (o en el caso de tener varios ficheros cuyo nombre empieza por excepcion1, con todos ellos). Análogamente con excepcion2 y excepcion3. dest_folder, corresponde con el directorio de destino.

Por ejemplo, si se quisieran copiar todos los archivos, excepto los que empiezan por adoc*, data*, table* y user*, se podría usar la siguiente sentencia:

ls | egrep -v ‘^adoc|^data|^table|^user’ | xargs -i cp {} /dest_folder/

NOTA: con ‘^’ se indica que el nombre del archivo (en este caso) ha de empezar con el patrón indicado.

¿Cuándo reiniciar Apache?

RAID
Dos preguntas cortas con respuestas de copy&paste sobre Apache.

¿Una modificación en el archivo php.ini requiere reiniciar apache para aplicarse?
“Si tenemos PHP como módulo del servidor, el archivo php.ini se lee cada vez que se reinicia. Por lo tanto tienes que reiniciar para que actualice los cambios. ”
Fuente: http://www.ignside.net/man/servidores/phpini.php

¿Y qué pasa si no puedo reiniciar apache porqué está en producción sirviendo una aplicación crítica?
“Las señales USR1 o graceful hacen que el proceso padre indique a sus hijos que terminen después de servir la petición que estén atendiendo en ese momento (o de inmediato si no están sirviendo ninguna petición). El proceso padre lee de nuevo sus ficheros de configuración y vuelve a abrir sus ficheros log. Conforme cada hijo va terminando, el proceso padre lo va sustituyendo con un hijo de una nueva generación con la nueva configuración, que empeciezan a servir peticiones inmediatamente.”
Fuente: http://httpd.apache.org/docs/2.0/stopping.html

Actualización Noviembre 2013

Aprovecho para actualizar este post con un par de apuntes:

  • Ante cualquier cambio en la configuración de Apache, podemos verificar si hay problemas con la nueva configuración, antes de aplicar los cambios, ejecutando:
/etc/init.d/httpd configtest
  • Una vez verificada la configuración, podemos reiniciar la configuración (sin necesidad de reiniciar Apache y por tanto sin afectar al servicio) símplemente haciendo un reload:
/etc/init.d/httpd reload

Flickr! Foto por US Mission Geneva

Registrar actividad en sesión ssh

spy
Imaginemos que queremos un método para registrar todo lo que un determinado usuario realiza durante su sesión ssh. Por lo tanto, lo que se busca es guardar el log de la actividad del usuario en el propio equipo al que se conecta, y por supuesto, no se quiere que el usuario pueda modificar o eliminar este archivo de log.

Opción 1

Una primera opción, es complicarse la vida, montando este entorno a mano.

Continuar leyendo “Registrar actividad en sesión ssh”