Historial para la etiqueta ‘bash’
Copia de seguridad de bases de datos MySQL
Para realizar una copia de seguridad de mis bases de datos MySQL solía hacer un «mysqldump» de todo lo que había en el servidor y comprimirlo en un «tar.gz». Esto me funcionó muy bien mientras tenía pocas bases de datos y las usaba todas con cierta frecuencia. Ahora tengo otras necesidades, ya que muchos de los proyectos asociados a esas bases de datos ya no están activos, los he transferido o, simplemente han muerto.
Para que me fuera más fácil poder restaurar solamente una base de datos, decidí modificar mi antiguo script para que volcara cada una de las bases de datos en un archivo distinto. Un par de horas después surgió esto:
#!/bin/bash # Back up all databases of a server putting each db in a different file # Backup destination directory BACKUP_DIR="$HOME/backup/" # Name of the backup file BACKUP_FILENAME="mysqlbackup" # Use the date for the filenames BACKUP_DATE=`date +"%Y%m%d_%H%M%S"` # Name of the archive file BACKUP_ARCHIVE=${BACKUP_DIR}${BACKUP_FILENAME}_${BACKUP_DATE}.tgz TEMP_DIR="/tmp/" # Check if the temporary directory exists, if not, create it if [ -d ${TEMP_DIR}${BACKUP_FILENAME}/ ]; then # directory exists echo "Cleaning ${TEMP_DIR} ..." rm -rf ${TEMP_DIR}${BACKUP_FILENAME}/* else echo "Creating ${TEMP_DIR} ..." mkdir ${TEMP_DIR}${BACKUP_FILENAME}/ fi # Get all database names DATABASES=`mysqlshow -u root -pmysqlpassword | sed 's/[ +-|]\+//g' | sed '/\-/d' | sed 's/^Databases//g' | sed '/^$/d'` # Dump each db in a different file in the temp dir for db in $DATABASES; do echo item: $db mysqldump -v -u root -pmysqlpassword -h localhost --create-options --extended-insert --databases $db > ${TEMP_DIR}${BACKUP_FILENAME}/${BACKUP_DATE}_${db}.sql done # Create the archive file in the backup dir pushd ${TEMP_DIR} tar cfz ${BACKUP_ARCHIVE} ${BACKUP_FILENAME}/${BACKUP_DATE}_* popd # Remove temp files echo "Cleaning ${TEMP_DIR} ..." rm -rf ${TEMP_DIR}${BACKUP_FILENAME}/* # Pretty output echo "###############################################################################" echo " Archive file: ${BACKUP_ARCHIVE}" echo " Archive size: "`stat -c%s ${BACKUP_ARCHIVE}`" bytes" echo "###############################################################################" echo "End" echo ""
Creo se explica solo.
Los más vagos lo podéis descargar aquí: mysqlbackup.sh.txt.
No olvidéis darle permisos de ejecución («chmod +x nombre_de_archivo»), cambiar el nombre de usuario y la contraseña en los comandos «mysqlshow» y «mysqldump» y quitarle la extensión «.txt», aunque esto último es opcional.
First post !! Un listado de comandos útiles para Linux
Este artículo contiene una colección de comandos y utilidades que suelo usar en la línea de comandos de Linux. No sé si tendrá mucho interés para vosotros puesto que, más que nada, lo pretendo llenar de cosas que necesito tener a mano desde muchos sitios. Vedlo más o menos como un «backup» online de truquillos.
Redirigir la salida de error al mismo sitio que la salida estándar. Ver aquí por qué.
cat archivo.txt > archivo.log 2>&1
Montar un archivo ISO para poder leerlo.
mount fichero.iso /mnt/directorio/ -t iso9660 -o ro,loop=/dev/loop0
Crear un ISO de un directorio
mkisofs -o /tmp/cd.iso /tmp/directory/
ídem con «dd»:
la unidad de CD (dev/hdd) tiene que estar desmontada
dd if=/dev/hdd of=fichero.iso
Convertir un archivo de latin1 a utf-8
iconv -f latin1 -t utf8 archivo_entrada > archivo_salida
Vice-versa; de utf8 a latin1
iconv -f utf8 -t latin1 archivo_entrada > archivo_salida
Nota: Con la opción «-c» de iconv se omiten loa caracteres no válidos en la salida (ver: «iconv –help»).
Leer el artículo completo »



