Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
tecnica:anotaciones_tecnicas [2017/08/04 18:41] fmolinuevo [Discos que muestran tamaño incorrecto 33MB o menos] |
tecnica:anotaciones_tecnicas [2023/07/28 20:49] fmolinuevo [Ver el tamaño de todas las tablas y mostrarlos en orden] |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== Anotaciones técnicas generales ====== | ====== Anotaciones técnicas generales ====== | ||
- | //Por el equipo de [[fmsi>|FMSI Sistemas de Informática]]// | + | //Por el equipo de [[axr>|AXR Sistemas de Informática]]// |
Línea 38: | Línea 38: | ||
===== Mover archivos con un patrón utilizando rsync y manteniendo la estructura del árbol de directorios original en el destino ===== | ===== Mover archivos con un patrón utilizando rsync y manteniendo la estructura del árbol de directorios original en el destino ===== | ||
- | rsync -av --remove-source-files --prune-empty-dirs --stats --include='*/' --include='*.726' --exclude='*' DiscoG/ /datos/Tecnicanet/backup-ransomware-20170804 | + | Este método permite "extraer" archivos que tengan un patrón, de entre otros, y mantener el árbol de directorios original. Lo usé en particular con una infección por malware, para dejar backup de los archivos encriptados, y luego restaurar los válidos desde el backup del día anterior. |
+ | |||
+ | rsync -av --remove-source-files --prune-empty-dirs --stats --include='*/' --include='*.mp3' --exclude='*' origen/ destino | ||
+ | |||
+ | ===== Renombrar archivos con caracteres especiales de un charset a otro ===== | ||
+ | |||
+ | A veces, migrando servidores Samba, surge el inconveniente de que los nombres de archivos pueden haber sido grabados en algún formato viejo como cp1250 o cp850 y es preciso renombrarlos en forma masiva utilizando otro charset, por ejemplo UTF8. Hay un comando maravilla en Linux que se ocupa de eso, de manera recursiva. | ||
+ | |||
+ | El comando siguiente informa qué archivos tienen caracteres especiales en el charset dado sin cambiar nada: | ||
+ | |||
+ | convmv -f cp1250 -t utf8 -r | ||
+ | |||
+ | Para convertir los nombres de archivos, se debe agregar el modificador --notest: | ||
+ | |||
+ | convmv -f cp1250 -t utf8 -r --notest | ||
+ | |||
===== Discos que muestran tamaño incorrecto 33MB o menos ===== | ===== Discos que muestran tamaño incorrecto 33MB o menos ===== | ||
Línea 61: | Línea 77: | ||
hdparm -N p78165360 /dev/sdx | hdparm -N p78165360 /dev/sdx | ||
- | Notar la "p" precediendo el valor de sectores máximos. Con un nuevo comando hdparm -N /dev/sdX se verá que HPA ha sido desactivado. A continuación, se debe reiniciar el equipo para que la BIOS vuelva a tomar el total del área disponible. Este cambio puede realizar sólo una vez por reinicio físico del equipo. | + | Notar la "p" precediendo el valor de sectores máximos. Con un nuevo comando hdparm -N /dev/sdX se verá que HPA ha sido desactivado. A continuación, se debe reiniciar el equipo para que la BIOS vuelva a tomar el total del área disponible. Este cambio se puede realizar sólo una vez por reinicio físico del equipo. |
==== Bibliografía ==== | ==== Bibliografía ==== | ||
Línea 315: | Línea 331: | ||
# Todas las tablas de todas las bases de datos, para un usuario específico ingresando desde cualquier host (superuser) | # Todas las tablas de todas las bases de datos, para un usuario específico ingresando desde cualquier host (superuser) | ||
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%' IDENTIFIED BY 'contraseña' WITH GRANT OPTION; | GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%' IDENTIFIED BY 'contraseña' WITH GRANT OPTION; | ||
+ | |||
+ | ==== Agregar un usuario root ==== | ||
+ | |||
+ | CREATE USER 'root'@'%' IDENTIFIED BY 'PASSWORD'; | ||
+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; | ||
+ | FLUSH PRIVILEGES; | ||
==== Realizar una copia de resguardo completa de una base de datos ==== | ==== Realizar una copia de resguardo completa de una base de datos ==== | ||
Línea 331: | Línea 353: | ||
</code> | </code> | ||
+ | ==== Ver el tamaño de todas las bases de datos ==== | ||
+ | |||
+ | <code> | ||
+ | SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema; | ||
+ | </code> | ||
+ | |||
+ | ==== Ver el tamaño de todas las tablas y mostrarlos en orden ==== | ||
+ | |||
+ | <code> | ||
+ | SELECT table_name AS "Table", ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)" FROM information_schema.TABLES WHERE table_schema = "database_name" ORDER BY (data_length + index_length) DESC; | ||
+ | </code> | ||
===== Analizar cuánta memoria usa un proceso ===== | ===== Analizar cuánta memoria usa un proceso ===== | ||
Línea 349: | Línea 382: | ||
===== Bash shell ===== | ===== Bash shell ===== | ||
- | ==== Para buscar qué paquete contiene un archivo dado ==== | + | ==== Usuarios: operaciones varias ==== |
+ | |||
+ | Renombrar un usuario (el ownership de los archivos y la pertenencia a grupos se mantienen porque no se cambia el UID): | ||
+ | |||
+ | usermod --login new_username --move-home --home path_to_the_new_home_dir old_username | ||
+ | |||
+ | Renombrar el grupo de un usuario: | ||
+ | |||
+ | groupmod --new-name new_username old_username | ||
+ | |||
+ | ==== RPM: buscar qué paquete contiene un archivo dado ==== | ||
rpm -qf $(which archivo) | rpm -qf $(which archivo) | ||
Línea 439: | Línea 482: | ||
find . ! -perm -g+w | find . ! -perm -g+w | ||
+ | === Buscar todos los archivos de un directorio modificados luego del momento indicado, y copiarlos a otro servidor === | ||
+ | |||
+ | Nota: el comando find crea un listado de archivos, que luego envía al rsync y éste los copia al destino en una sola conexión. Lo usé en Tascani | ||
+ | |||
+ | find /srv/archivos/DiscoG -type f -newermt '20210101 00:00:00' -print0 | rsync -av --progress -0 --files-from=- / root@172.20.0.1:/srv/archivos | ||
==== Cancelar mensajes por consola ==== | ==== Cancelar mensajes por consola ==== | ||
Línea 468: | Línea 516: | ||
* **C-y**: restaura lo borrado con alguno de los comandos anteriores | * **C-y**: restaura lo borrado con alguno de los comandos anteriores | ||
+ | ==== Cómo hacer un hard reset para shutdown o reboot por línea de comandos ==== | ||
+ | |||
+ | Es útil cuando tenemos un servidor totalmente colgado y no podemos reiniciarlo con un shutdown o systemctl normal, pero sabemos que probablemente inicie correctamente luego del reboot. | ||
+ | |||
+ | Primero se sugiere realizar un sync de emergencia de los discos con: | ||
+ | |||
+ | sh -c "echo s > /proc/sysrq-trigger" | ||
+ | |||
+ | Hard shutdown: | ||
+ | |||
+ | sh -c "echo o > /proc/sysrq-trigger" | ||
+ | |||
+ | Hard restart: | ||
+ | |||
+ | sh -c "echo b > /proc/sysrq-trigger" | ||
+ | |||
+ | ==== Manejo de unidades/discos extraíbles ==== | ||
+ | |||
+ | Se puede utilizar el comando **udisksctl**, que es parte del paquete **udisksd**. | ||
+ | |||
+ | Mostrar el listado de unidades extraíbles: | ||
+ | |||
+ | udisksctl status | ||
+ | |||
+ | Mostrar información sobre un dispositivo de bloques: | ||
+ | |||
+ | udisksctl info -b /dev/nvme0n1 | ||
+ | |||
+ | Apagar una unidad: | ||
+ | udisksctl power-off -b /dev/sdb | ||
===== X Window System ===== | ===== X Window System ===== | ||