Este pequeño Shell Script nos permitirá realizar Copias de Seguridad de cualquier carpeta de dominio que indiquemos usando un fichero de configuración.
Voy a dividir la información en bloques
- En Server Configuration voy a indicar los información básica del servidor.
- En FTP Data indicaré el programa de FTP que voy a usar para cargar datos y los datos de acceso.
- La sección FTP Directories la usamos para configurar las carpetas de origen y destino de las copias.
- Y por último todo el proceso que realizará el Backup.
Necesitamos crear el fichero que contiene los dominios y carpetas que se van a copiar.
Por lo que creo un fichero domains.lst que contiene los siguientes datos:
- En primer lugar el dominio (artegrafico.net) que se va a copiar.
- Y en segundo lugar los directorios que quiero hacer backup, separados por (|).
- Se pueden incluir tantos dominios y directorios como deseemos.
1 2 3 |
artegrafico.net|httpdocs|blog.artegrafico.net|desarrollo.artegrafico.net otrodominio.es|httpdocs|pruebas.otrodominio.com tudominio.es|httpdocs|logs |
Este proceso lo he realizado porque no siempre se necesita hacer Backup de toda la información almacenada de un dominio (logs, errors, subdominios, etc …)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
################################################################# # SERVER CONFIGURATION ################################################################## SERVIDOR=artegrafico.net DATE=$(date +"%Y-%m-%d")_$(date +"%H-%M") # mm-dd-yyyy-hh.mm.ss EMAIL=jose@merkasi.es SUBJECT="Backup WEB" ################################################################# # FTP DATA ################################################################## NCFTP="/usr/bin/ncftpput" FTP=artegrafico.net FTP_USUARIO=youruser FTP_CLAVE=yourpassword ################################################################# # FTP DIRECTORIES ################################################################## DOMAINS_DIR=/var/www/vhosts/ DOMAINS_DIRECTORIES="/home/backup/domains.lst" BACKUP_TMP=/home/backup/tmp BACKUP_DIR=backups.artegrafico.net ################################################################# # BACKUP PROCESS ################################################################## IFS='|' # lines separator LINES=$(wc -l < $DOMAINS_DIRECTORIES) z=1 while read -r domain dirs do echo "######################################################" echo "$z/$LINES Backup from domain ..." $domain echo "######################################################" # process for read directories for dir in $dirs; do # directory to prepare tar.gz file DIR_COPY=$DOMAINS_DIR$domain/$dir echo "Preparing to copy .... $DIR_COPY ..." # temporary directory and name of file FILE=$BACKUP_TMP/$DATE-$domain-$dir.tar.gz echo "preparing backup file ..." $FILE # compress file tar -czf $FILE $DIR_COPY # send file to ftp $NCFTP -m -u $FTP_USUARIO -p $FTP_CLAVE $FTP $BACKUP_DIR/$domain/$dir $FILE # delete temporary file rm -f $FILE done z=$((z+1)) done <$DOMAINS_DIRECTORIES |
En el proceso de Backup uso el operador IFS (Internal Field Separator) para poder separar cada linea en palabras, indicándole que separador hay entre ellas.
1 2 3 4 5 |
IFS='|' while read -r domain dirs do # code done <$DOMAINS_DIRECTORIES |