Tag Archive bash

León Ramos PorLeón Ramos

¿Cómo borrar y no borrar en linux?

Hola amigos de Creadores Digitales en ésta ocasión veremos cómo borrar y cómo NO borrar en Linux.

Borrar un archivo sencillo

Éste es el comando más sencillo, usa rm que podría ser el acrónimo de “remover”, seguido del nombre del archivo que vas a borrar.

rm mi_archivo.txt

Borrar un directorio

Para eliminar un directorio se puede usar el comando rmdir que podría significar “remover directorio”, sin embargo, casi no se usa porque el directorio en cuestión debe de estar vacío para ser borrado por este comando. Por lo que, o bien, primero borras todo su contenido, o bien, usamos un comando recursivo.

rmdir directorio_vacio

Borrar un directorio recursivamente

¿Recursivo? Si, lo que vamos a hacer para borrar un directorio con todo su contenido, sin importar cuántos niveles tiene, es usar el comando:

rm -Rf nombre_directorio

En mi caso uso las opciones R mayúscula para indicarle que borrará recursivamente, es decir, borrará a todos sus hijos. Pero también uso la opción f minúscula porque con ella evito que el sistema me pregunte si estoy seguro de borrar cada archivo. Ojo, ten mucho cuidado con éste comando porque puedes hacer cosas locas que te costará trabajo recuperar.

Borrando selectivamente con find

El comando find (encontrar) nos ayuda a listar el contenido de una carpeta con todos sus archivos. Por ejemplo:

find <carpeta a buscar>

Nos mostrará todo el contenido de una carpeta, tanto archivos, directorios y ligas simbólicas.

A veces queremos listar solamente los archivos y  dejar los directorios. El comando find permite filtrar con la opción -type seguida de la letra f para un archivo (file), la letra d para un directorio, o la letra l para una liga.

Por ejemplo, si queremos encontrar todos los archivos dentro de varias carpetas, podemos ejecutar el siguiente comando:

find <directorio a buscar> -type f

Ahora, ¿qué tal si queremos listar los archivos que terminen con la palabra conf? podemos hacerlo de la siguiente forma:

find <directorio a buscar> -type f -name “*conf”

¿Todo se ve muy bien verdad? Ahora, en lugar de mostrarlos, los eliminaremos.

find <directorio a buscar> -type f -name “*conf” -exec rm {} \;

Las llaves se sustituirán por el contenido que find encontró, es decir, los archivos que filtraste por tipo y por nombre. Si te fijas, al final se pone una diagonal invertida y un punto y coma. El punto y coma indica que por cada archivo que encuentre, se ejecutará una vez el comando rm.

También podemos decirle al sistema que lo intente hacer de un sólo jalón, cambiemos la diagonal invertida y el punto y coma por un signo de suma.

find <directorio a buscar> -type f -name “*conf” -exec rm {} +

Posibles errores al borrar

Archivo sin permisos

Si intentamos borrar un archivo sin permisos de escritura el sistema nos va a pedir confirmación para su borrado, pero si el archivo se encuentra en nuestro home, lo va terminar haciendo.

rm mi_archivo_sin_perms.txt

Archivo de otro usuario

Si no somos el dueño y el archivo se encuentra en otro directorio, no podremos borrarlo, el comando nos entregará un error.

rm /un_archivo.txt

rm: ¿borrar el fichero regular vacío ‘/un_archivo.txt’ protegido contra escritura? (s/n) s
rm: no se puede borrar ‘/un_archivo.txt’: Permiso denegado

Si no somos el dueño, podemos usar sudo, si contamos con el permiso de super usuario, podemos borrar archivos de otros usuarios.

sudo rm /un_archivo.txt

Nunca cometer

Borrado recursivo total

Hay muchos trolls que, en algunos foros van a intentar convencerte de ejecutar el siguiente comando o un script que contenga el siguiente comando:

sudo rm –no-preserve-root -Rf /

Dicho comando causará un borrado del sistema completamente y, si tienes los suficientes permisos, el sistema no se quejará en lo más mínimo, causando la pérdida de toda la información y que tu sistema no arranque.

Borrado de archivos de arranque

En linux los archivos de arranque se encuentran en la carpeta /boot, procura tener especial cuidado en borrar cualquiera de esos porque evitarás que el sistema vuelva a encender.

sudo rm -Rf /boot

Conclusiones

Así que ya sabes, en linux siempre hay una forma de alcanzar lo que estás buscando, sólo ten mucho cuidado al momento de realizar limpieza en tu sistema.

Hasta la próxima, no se te olvide suscribirte y recomendarnos!

León Ramos PorLeón Ramos

¿Cómo cambiar un texto en varios archivos en Linux?

Mini tutorial: ¿Como cambiar texto o cadena en varios archivos en Linux?

¡Hola Creadores!

En éste mini tutorial vamos a ver cómo cambiar un texto o una cadena en varios archivos en un sistema Linux.

En la primera parte nos concentramos en encontrar los archivos que tienen la cadena de texto con la herramienta egrep.

$ egrep 'texto' * -ri

Luego vemos cómo contar los archivos encontrados utilizando la herramienta wc.

$ egrep 'cadena' -ri | wc -l

Finalmente nos concentramos en realizar el cambio que queremos

$ egrep 'cadena' -ril | xargs sed -i 's/cadena/nueva/g'

Espero que les sirva!

León Ramos PorLeón Ramos

Script para hacer respaldos automáticos de mongodb

A principios de este año 2017 se presentó un tipo de “Ransomeware” que atacaba bases de datos no relaciones MongoDB, <<Ransomeware es un tipo de software malicioso que codifica tu información sensible y cobra un rescate para devolverte el acceso a la misma, proviene del inglés “Ransome” que significa secuestro y “Software”>>  y digo un tipo de Ransomeware porque en realidad no codificaba tu información, simplemente ejecutaba una sentencia de borrado y aún así te pedía rescate. Para los que alguna vez jugamos con bases de datos relacionales, su equivalente sería un “delete database” ejecutado de forma remota sobre servidores mal asegurados.

Dicho lo anterior, ese hecho dejó bien claro que era momento de tener respaldos frecuentes y bien almacenados. Si, como yo, tienes una aproximación muy práctica a las cosas, aquí te dejo un script que puede ayudarte con ese cometido.

Realizar un respaldo de bases de datos mongodb programado y, después borrar los respaldos mayores a un número de días para evitar saturación de disco duro.

No está demás mencionar que el script puede modificarse para respaldar casi cualquier cosa y, como lo estoy liberando bajo la licencia GPLv3, te invito a que lo modifiques a tu antojo. Sólo recuerda compartirlo una vez que lo cambies. Puedes realizar una derivación de mi repositorio.

El archivo readme.md tiene las instrucciones básicas de su uso, pero si tienes alguna duda posterior, no vaciles en contactarme.

Aquí la liga de acceso al repositorio: https://goo.gl/wKfiVK

¡Que la paz mental te acompañe con respaldos completos!

Hasta la próxima,