Posts Tagged ‘backup’

  • Como Usar FTP en Shell Script

    2

    A diario hago backup en mis servers pero los archivos quedan residentes en las mismas máquinas. Obviamente mientras el backup esté mas lejos de los datos originales menores son las probabilidades de no recuperarse de un desastre computacional.

    Lo ideal seria hacer una transmisión FTPS o SFTP si estás preocupado por algun sniffer o similar, pero bueno, aquí vamos a ver la solución fácil y rápida con un shell script muy sencillo.

    #!/bin/sh
    HOST='www.myserver.com'
    USER='myuser'
    PASS='mypassword'
    #voy a hacer backup del folder creado ayer
    YESTERDAY=$(date --date='1 day ago' +%Y%m%d)
    
    # pensemos que dejamos los backups diariamente en este path
    # los cuales estan en folders con formato fecha cual
    # 20100227 (YYYYMMDD)
    cd /home/myuser/backups/
    # creo localmente un folder con el mismo nombre
    mkdir $YESTERDAY
    cd $YESTERDAY
    
    ftp -n $HOST <<END_SCRIPT
    quote USER $USER
    quote PASS $PASS
    # aca vamos a la misma locacion pero en el server
    cd /home/myuser/backups/$YESTERDAY
    # aca es donde bajamos el archivo que queremos backupear
    get backup.tar
    quit
    END_SCRIPT
    exit 0
    

    Y listo, solo nos falta una entrada en el cron para correr esto a diario. Para ello:

    crontab -e

    Entonces agregamos el script para ser llamado diariamente

    0 1 * * * /usr/share/scripts/mybackupscript.sh

    Esto soluciona grandes dolores de cabeza con mínimo esfuerzo. Que lo disfruten!

  • Como obtener la fecha de ayer con shell script

    0

    Estuve necesitando obtener la fecha de ayer para poder hacer un cron backup diario de los logs de los servidores, por ende hice un shell script para poder obtener los archivos de ayer, zipearlos y mandarlos a otro folder.

    #!/bin/sh
    
    #get the date from yesteday
    DATE=$(date --date='1 day ago' +%Y-%m-%d)
    
    mv /var/log/tomcat/site1.$DATE* old
    mv /var/log/tomcat/site2.$DATE* old
    mv /var/log/tomcat/localhost.$DATE* old
    mv /var/log/tomcat/catalina.$DATE* old
    mv /var/log/tomcat/site2.com_access_log.$DATE* old
    mv /var/log/tomcat/site1.com_access_log.$DATE* old
    
    zip -m9 /usr/share/store/log/$DATE-log-backup.zip /var/log/old/*
    
  • Como Hacer Backup de MySql en Java

    9

    MySql es una base tan poderosa como sencilla. La funcionalidad de backup mas simple es usando mysqldump . Veamos algo de Codigo.

    ACTUALIZADO! Gracias a Mario Gonzalez que ha planteado algunas dudas estamos actualizando este articulo

    Este codigo sencillamente va a hacer un dump de la base de datos entera a un file (back.sql). Seria bueno despues de esto utilizar las clases Zip de Java para comprimir el contenido, dado que este file puede ser enorme.

    Primero vamos a escribir un metodo bien util para transferir desde un input a un output stream.

    public void transfer(InputStream input, OutputStream output) throws Exception {
      byte[] buf = new byte[1024];
      int len;
      while ((len = input.read(buf)) > 0) {
        output.write(buf, 0, len);
      }
      input.close();
      output.close();
    }

    Ahora el backup.

    String command = "mysqldump -hlocalhost  -umyuser -pmypass  -rc:\\back.sql mydb";
    
    java.lang.Process child = Runtime.getRuntime().exec(command);
    InputStream input = child.getInputStream();
    
    FileOutputStream output = new FileOutputStream("c:/back.sql");
    transfer(input, output);

    Ahora vamos a hacer el restore de la informacion que obtuvimos tambien mediante Java.

    String command = "mysql mydb --user=myuser --password=mypass < \"c:\\back.sql\"";
    Process child = Runtime.getRuntime().exec(command);
    InputStream input = child.getInputStream();
    transfer(input, System.out); // escribimos el resultado en el System.out