Script para extraer archivos importantes de ordenador antes de formatear.

El siguiente script realiza una copia de seguridad de los documentos, imágenes, música, videos, etc. de un equipo antes de realizar una instalación.

Arrancamos con un Linux Live, introducimos un pendrive o disco duro en el equipo y a continuación ejecutamos el script.

El script genera en el dispositivo de copia de seguridad la misma estructura de directorios que en el original.

Está preparado para copiar los siguientes tipos de archivos:

office=”doc docx xls xlsx ppt pptx mdb accdb odt odp”
images=”jpg”
compressed=”zip rar 7z”
music=”mp3 ogg”
video=”avi mpeg mpg”
other=”txt”

En caso necesario añade en la sección # filetypes más extensiones que quieras salvar.

#!/bin/sh

##############################################################################
## ##
## zcopy. ##
## ##
## zcopy.sh (C) 2012 Clemente Feo González. ##
## zcopy.sh (C) 2012 Jesús Hernández Gormaz. ##
## ##
## This program is free software; you can redistribute it and/or ##
## modify it under the terms of the GNU General Public License as ##
## published by the Free Software Foundation; either version 3, or ##
## (at your option) any later version. ##
## This program is distributed in the hope that it will be useful, ##
## but WITHOUT ANY WARRANTY; without even the implied warranty of ##
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ##
## GNU General Public License for more details. ##
## You should have received a copy of the GNU General Public License ##
## along with this program; if not, write to the Free Software ##
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ##
## ##
##############################################################################

# Filetypes: add more if you want
office="doc docx xls xlsx ppt pptx mdb accdb odt odp"
images="jpg"
compressed="zip rar 7z"
music="mp3 ogg"
video="avi mpeg mpg"
other="txt"

# Archivo temporal con la lista de archivos a copiar
LISTA="/tmp/lista"

menu_filetypes() {

retval=$(zenity --list \
--text "Seleccione los tipos de archivos que quiere copiar                             " \
--checklist \
--column "X" --column "Opcion" --column "Tipos de archivo" \
TRUE "OFFICE" "$office" \
TRUE "IMAGES" "$images" \
FALSE "COMPRESSED" "$compressed" \
FALSE "MUSIC" "$music" \
FALSE "VIDEO" "$video" \
FALSE "OTHER" "$other" \
--separator=" ")

# Si le hemos dado a cancelar o cerrar, saldremos del script
if [ -z "$retval" ] ; then
zenity --error \
             --text="Acción Cancelada."
      exit
fi

echo $retval | grep -q 'OFFICE'
OUT=$?
if [ $OUT -eq 0 ];then
cadena=$cadena" "$office
fi
echo $retval | grep -q 'IMAGES'
        OUT=$?
        if [ $OUT -eq 0 ];then
cadena=$cadena" "$images
        fi
echo $retval | grep -q 'COMPRESSED'
        OUT=$?
        if [ $OUT -eq 0 ];then
cadena=$cadena" "$compressed
        fi
echo $retval | grep -q 'MUSIC'
        OUT=$?
        if [ $OUT -eq 0 ];then
cadena=$cadena" "$music
        fi
echo $retval | grep -q 'VIDEO'
        OUT=$?
        if [ $OUT -eq 0 ];then
cadena=$cadena" "$video
        fi
echo $retval | grep -q 'OTHER'
        OUT=$?
        if [ $OUT -eq 0 ];then
cadena=$cadena" "$other
        fi
}


menu_select_root(){
  DIRECTORY_ROOT=`zenity --file-selection --directory --filename=/media/ \
--title "Seleccione un directorio origen"`
# Si le hemos dado a cancelar o cerrar, saldremos del script
if [ -z "$DIRECTORY_ROOT" ] ; then
zenity --error \
              --text="Acción Cancelada."
       exit
fi
}

menu_select_target(){
        DIRECTORY_TARGET=`zenity --file-selection --directory --filename=/media/ \
                        --title "Seleccione un directorio destino"`
# Si le hemos dado a cancelar o cerrar, saldremos del script
if [ -z "$DIRECTORY_TARGET" ] ; then
zenity --error \
              --text="Acción Cancelada."
       exit
fi
}

busqueda() {
# Buscamos un tipo de extension desde el directorio_root
find "$DIRECTORY_ROOT/" -iname "*.$i"
}

busca_y_graba(){
# Creamos el fichero donde se guarda la ruta de todos los archivos a copiar
echo "$LISTA" > $LISTA
# Iremos buscando cada tipo de archivo y el resultado lo metemos en la lista
echo "----- Buscando archivos ------"
for i in $cadena;
        do 
      echo "  --Buscando archivos: $i"
      busqueda >> $LISTA
done
# Guardamos los archivos de la lista en el directorio destino
echo "------- Copiando archivos ------- "
rsync -av --progress --files-from=$LISTA / "$DIRECTORY_TARGET/"
# Eliminamos el fichero lista ya que es temporal
echo "------- Copia finalizada --------"
zenity --text-info \
       --title="Archivos copiados" \
       --filename=$LISTA
rm $LISTA

}

menu_filetypes
menu_select_root
menu_select_target
busca_y_graba

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *