#soluciondeproblemas — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #soluciondeproblemas, aggregated by home.social.
-
Tener un dump de las bases de datos es una buena practica, pero asumamos que de las dos formas, de guardar tus bases, elegiste la mas radical.
Introducción
Un respaldo regular te permite deshacer cambios en caso de que estés trasteando en tus sitios web, con lo que puedes ir probando loo que cause algún problema. Respaldos históricos de mas largo plazo también ayudan en caso de que no sepas cuando ha ocurrido algún cambio perjudicial en tu sitio, pero por el momento, yo ya te sugerí un sistema rápido para hacer respaldos de 7 dias. En ese articulo explicaba que se podía automatizar y toda la cosa, pero el resultado era un enorme archivo de dump, conteniendo todas las bases de datos que hayan en tu servidor en un solo enorme archivo.
El problema
Si bien un archivo único permite tener un punto de restauración general para todas tus web, también significa que es un bulto inmenso que no vas a poder controlar fácilmente. Mis sitios non son muy voluminosos, así que a lo mucho el dump completo solo alcanza los 270MB. No es algo complicado de almacenar ni distribuir, pero si que es una pesadilla para los editores de texto.
Al restaurar un volcado de base de datos, el interprete recorre todo el archivo indiscriminadamente, ejecutando todo lo registrado alli. Pero si solo quieres restaurar un solo archivo, probablemente esto sea «gastar pólvora en gallinazos» porque solo quieres restaurar una base de datos. Probablemente la mas pequeña incluso.
No intentes abrirlo desde la consola con un editor de texto. Se colgará tu equipo. Tampoco con un editor visual. Puedes arriesgarte con un editor SQL y tendrías mas suerte, pero es muy probable que se ponga lento y sea pesado de trabajar con el. Estarás sufriendo todo el rato e incluso los cambios mas ligeros pueden ser un tormento. Y lo peor es que modificar un dump de SQL puede provocar errores bien raros que te ahorrarías solo restaurando el volcado original. Lo que necesitas es una forma de recuperar solo la base de datos especifica que quieres restaurar.
La solución
Si eres tan noob como yo y llevaste al colapso tu computador intentando infructuosamente editar un mega archivo de texto, te recomiendo en cambio, la magia del AWK.
AWK es un lenguaje de programación y una herramienta de línea de comandos utilizada para procesar archivos de texto. Permite analizar y manipular datos basándose en patrones, procesando los archivos línea por línea y dividiéndolos en campos (columnas). Es muy útil para filtrar, transformar y generar informes a partir de datos estructurados. El nombre proviene de las iniciales de sus creadores: Alfred Aho, Peter Weinberger y Brian Kernighan.
Puedes usar AWK directo desde la consola, pero es mejor que guardes un script que tenga una logica que buscas de forma congruente. Te sugiero para eso, este script que mediante AWK separa un Dump total en diferentes archivos sql de cada una de las bases contenidas, asumiendo como separador «– Current Database».
Cuando encuentra una de estas líneas, extrae el nombre de la base de datos (dbname). Abre un nuevo archivo llamado nombre_de_la_bd.sql en el directorio especificado. Todas las líneas siguientes se escriben en ese nuevo archivo hasta que se encuentra la línea de cabecera de la próxima base de datos. Finalmente, tendrás un archivo SQL para cada base de datos en tu directorio de salida.
Para ejecutar este código, debes invocarlo de la siguiente manera:
./split_mysqldump.sh archivo_dump_maestro.sql directorio_salida🖕Recuerda que el nombre del archivo queda a tu criterio. En mi caso le puse split_mysqldump para sonar genial XD
1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445
#!/bin/bash# Script revisado para dividir un dump de multiples bases de datos en archivos individuales.# Uso: ./split_mysqldump_v2.sh <archivo_dump_maestro.sql> <directorio_salida>DUMP_FILE=$1OUTPUT_DIR=$2if [ -z "$DUMP_FILE" ] || [ -z "$OUTPUT_DIR" ]; then echo "Uso: $0 <archivo_dump_maestro.sql> <directorio_salida>" exit 1fi# Crear el directorio de salida si no existemkdir -p "$OUTPUT_DIR"echo "Directorio de salida: $OUTPUT_DIR"# Usar awk para procesar el archivo y redirigir a archivos individualesawk -v out_dir="$OUTPUT_DIR" ' /^-- Current Database: `[^`]+`/ { # Extraer el nombre de la base de datos match($0, /`[^`]+`/); dbname = substr($0, RSTART+1, RLENGTH-2); # Construir el nombre del archivo de salida output_file = out_dir "/" dbname ".sql"; # Imprimir mensaje de depuración en stderr (consola) print "-> Iniciando volcado para BD: " dbname " en " output_file > "/dev/stderr"; # Cerrar el archivo anterior si existe (para evitar problemas) if (current_file && current_file != output_file) { close(current_file); } current_file = output_file; } { # Escribir la línea actual en el archivo de la BD actual if (current_file) { print $0 >> current_file; } }' "$DUMP_FILE"echo "Proceso completado. Archivos individuales creados en: $OUTPUT_DIR"
Una vez que hayas conseguido tus archivos, usa tu comando para poder restaurar la base de datos que necesitas.
mysql -u [usuario] -p < nombre_de_tu_bd.sql🖕Usa mariadb en lugar de mysql si así tienes instalado.
Explicación
No te recomiendo agarrar y ejecutar códigos encontrados por internet. tampoco el mio, pero te ayudare a entender lo que estas ejecutando al menos, asi, puedes intentar construir uno propio. Pero al menos por experiencia propia, este código me funcionó a mi XD
awk -v out_dir=OUTPUT_DIR ...1. Inicialización y Variables de Entrada: El comando se ejecuta con awk. La opción-v out_dir=OUTPUT_DIRpasa una variable externa llamadaOUTPUT_DIR(que debe ser reemplazada por la ruta real del directorio de salida al ejecutar el comando) a la variable interna deawk out_dir.Current Database2. Patrón de Búsqueda:awkprocesa el archivo de entrada línea por línea. Este fragmento de texto(Current Database)actúa como un patrón. Cuando una línea del archivo de entrada coincide con este patrón (es decir, la línea contiene"Current Database"), se ejecutan las acciones dentro del bloque.match($0, /dbname/)3. Extracción del Nombre de la BD: Dentro del bloque de acción,match($0, /dbname/)busca la palabra «dbname» en la línea actual ($0). Esta función es parte del código de ejemplo que describes, aunque la lógica completa para extraer el nombre real de la BD de la línea suele ser más compleja (ej. usando expresiones regulares). Asumiendo que la línea contiene el nombre de la BD, la siguiente parte se encarga de aislarlo.dbname = substr($0, RSTART, RLENGTH)4. Almacenamiento del Nombre: Utiliza la función substr para extraer el nombre real de la base de datos de la línea actual.RSTARTyRLENGTHson variables especiales de awk que se establecen automáticamente por la función match y marcan el inicio y la longitud de la coincidencia encontrada.output_file = out_dir "/" dbname ".sql"5. Construcción del Nombre del Archivo: Se construye la ruta completa del archivo de salida combinando el directorio de salida(out_dir), el nombre de la base de datos (dbname) y la extensión .sql.print "Iniciando volcado para BD: " dbname " en " output_file > "/dev/stderr";6. Salida por pantalla: Muestra el resultado del script en la consola mediante el /dev/stderrif (current_file && current_file != output_file) close(current_file)7. Cierre del Archivo Anterior: Si ya se estaba escribiendo en un archivo anterior (current_file existe) y este es diferente al nuevo output_file, se cierra el archivo anterior para evitar problemas de escritura simultánea o corrupción de datos.current_file = output_file8. Actualización del Archivo Actual: La variable current_file se actualiza para apuntar al nuevo archivo de salida que se acaba de determinar.if (current_file) print $0 >> current_file9. Escritura de la Línea: Finalmente, si existe un archivo actual definido, la línea completa que se está procesando ($0) se escribe (con >>, que significa añadir al final o crear si no existe) en el current_file.Conclusión
Si usas Windows e intentas modificar el archivo dump sin cuidado, te encontraras con errores molestos de caracteres. esto es porque tienes que controlar la codificación de caracteres original y en windows se suele cambiar a la codificación que se usa alli. Puedes utilizar Notepad++ pues te dice la codificación y permite cambiar entre ellas, pero de todas formas puedes desbordar la memoria con un archivo de mas de 10mb, así que lo mejor es utilizar un script que separe las bases de datos o directamente exportar en bases individuales.
https://interlan.ec/2025/11/28/articulo-segmentar-dump-de-mysql/
#articulo #code2 #linux #mariadb #mysql #selfhosting #servidores #solucionDeProblemas #vps
-
Este es de los problemas que te encontrarías solo por hacer las cosas de forma manual, no tendrás que prestarle mucha atención con un sistema completo como Mailú, del que ya hablé alguna vez.
Introducción
Bueno, si te interesa este tema, es probable que contarte sobre los correos, su historia y sus usos te resulte repetitivo, así que me centraré en este problema. Hay muchísimas políticas destinadas para el control de Spam y phishing, así que administrar un servidor de correo electrónico se ha vuelto monstruosamente complicado. DKIM, SPF y otras cosas de las que hemos hablado, son medidas de seguridad para autenticar el origen de los correos, debido a que la naturaleza federada de estos, permite que cualquier persona pueda desplegar uno propio sin limitaciones y por supuesto, enviar masivas cantidades de correos.
Los problemas
1234
Oct 17 09:21:40 debian postfix/smtpd[1643]: NOQUEUE: reject: RCPT fromunknown[x.x.x.x]: 553 5.7.1 <[email protected]>: Sender address rejected:not owned by user [email protected]; from=<[email protected]>to=<[email protected]> proto=ESMTP helo=<[192.168.1.1]>
La enorme versatilidad de postfix permite configurar hasta detalles que parecen ridículos, pero en este caso, el error
Error Sender address rejected: not owned by user postfixestá causado por la falta de una configuración. Esta permite al sistema validar las las propias cuentas creadas para controlar a quien pueden escribirle. Por supuesto, también si se puede escribir a cuentas internas o externas.La solución
Tampoco es que sea una tarea titánica. Por supuesto, si no tienes idea de donde tocar, no sabrías como arreglarlo. No es nada intuitivo y sin panel de control, interfaz web y otras cosas, pues solo queda recurrir a internet para encontrar alguien que haya tenido el mismo problema y alguien lo haya ayudado a resolverlo.
Lo primero, tienes que haber creado una cuenta de usuario. Por supuesto, tienes que haber seguido los pasos para crear un postmap virtual.
En el directorio
/etc/postfix/virtualagrega la nueva cuenta que has creado en tu sistema.Un vez todo configurado, debes hacer un
postmap /etc/postfix/virtualpara actualizar la base de datos virtuales.Recuerda tener el archivo virtual en formato dirección de correo / nombre de usuario
123
[email protected] [email protected]@ejemplo.com [email protected]@ejemplo.com [email protected]
Conclusiones
Esta solución la encontré en una respuesta de hace 10 años en serverfault a una pregunta similar al problema que tenia. Esto resuelve el problema de que es imposible enviar correos a servidores externos (gmail por ejemplo) pero si que permite enviarlos de forma local a otros usuarios del servidor propio. En principio no hay ningún problema visible desde el cliente de correo puesto que el correo se enviar sin generar error y no hay mensaje de rebote. Por supuesto, esto no pasaria en un entorno ya configurado con docker como Mailu o directamente usar paneles de control tipo CPanel, AAPanel y cosas similares (No tienes que sufrir todo esto y menos si lo haces por trabajo)
https://interlan.ec/2025/10/17/error-sender-address-rejected-not-owned-by-user-postfix/
#correoElectronico #diy #email #gmail #linux #postfix #resolucionDeProblemas #seguridad #selfhosting #servidores #solucionDeProblemas #troubleshoting #tutorial #vps
-
- Opciones Avanzadas de Windows 11: 6 Trucos para Dominarlas
- #Windows11 #OpcionesAvanzadas #SoluciónDeProblemas - #Windows - #EvergreenContent #Technology #Windowstips
- ¡Descubre las 6 mejores formas de acceder a las Opciones Avanzadas de Inicio en Windows 11! 🖥️✨ Este potente entorno de recuperación te ayuda a diagnosticar y solucionar problemas, restaurar tu sistema y mucho más. Ya sea a través de la Configuració...
https://mastertrend.info/opciones-avanzadas-de-windows-11/?fsp_sid=2445