Skip to content

Instantly share code, notes, and snippets.

@jspaezp
Last active August 2, 2016 17:41
Show Gist options
  • Save jspaezp/d973fdb128202891deeec834e78cbfa0 to your computer and use it in GitHub Desktop.
Save jspaezp/d973fdb128202891deeec834e78cbfa0 to your computer and use it in GitHub Desktop.
#!/bin/sh
# adding timestamp
TS=$(date +"%F")
# Name specification
BKPNAME="bkpSebastian-$TS"
# Tar
tar --exclude-caches \
--exclude="/home/sebastian/.*" \
--exclude="/home/sebastian/Docker\\ Containers"\
--exclude="/home/sebastian/Docker Containers"\
--exclude="/home/sebastian/Dropbox" \
--exclude="/home/sebastian/jsppUnal"\
--exclude="/home/sebastian/perl5" \
--exclude="/home/sebastian/R" \
--exclude="/home/sebastian/R_libs" \
--exclude="/home/sebastian/share" \
--exclude="/home/sebastian/tmp" \
--exclude="/home/sebastian/VirtualBox\ VMs" \
--exclude="/home/sebastian/bkp*" \
-cjv /home/sebastian | \
split -d -b 3900m - "/home/sebastian/$BKPNAME.tar.gz."
#!/bin/sh
# lo que va despues de un # significa que es un comentario
# osea que no lo ejecuta el computador (exepto la primera linea)
# ES DECIR que esta hecho para que lo lea un humano, no un pc
# Y TAMBIEn los \ al final de las lineas es como decir
# "hey aun no he acabado el comando"
#la anterior linea dice que esto se deberia correr con una shell normal...
# como >sh _COMANDO___ en una terminal, o equivalente
# adding timestamp
#el siguiente comando genera una variable con la fecha en formato "2016-08-02"
TS=$(date +"%F")
# Name specification
# El sigueinte si es para modificarlo manualmente,
# le asigna el nombre final al archivo, y si ve al final dice $TS
# eso significa que la ultima parte es la fecha que teniamos antes
# osea quedaria "bkpSebastian-2016-08-02" como el nombre base del archivo
BKPNAME="bkpSebastian-$TS"
# Tar
# tar es como ... winzip en linux, comprime archivos
# lelva muchos argumentos aca uso --exclude-caches ....
# el cual hace eso .. hace que se salte las carpetas que tienen cache
# tambien uso --exclude="CARPETA/archivo QUE QUIERO EXCLUIR" que hace eso
# ... excluye el archivo/carpeta
# -c crea un nuevo archivo
# -j dice que use un metodo de compresion bieeeen gonorrea, es lento pero queda bien chiquito
# -v dice que sea "verboso" el proceso .... osea que diga que va haciendo a cada rato en la temrinal
# /home/sebastian es la carpeta a la que le quiero hacer el backup en este caso
# | se llama pipe (de tubo) y lo que hace es pasar el resultado de lo anterior a la sigueinte funcion
# para ilustrarle rapido como funciona corra en una temrinal ls, despues corra ls | less
# POR TANTO lo anterior se pasa de una vez a split, que hace eso, separa un archivo en varios pedazos
# -d le dice a split que enumere los pezados (parte01, parte02 ... en contraste con parteAA, parte AB ...)
# -b (por bytes) le dice de que tamanio deberia ser cada pedazo, en este caso 3900mb
# el "-" es para decirle que lo que va aca es lo de la anterior funcion
# (es como la "varible" que dice que se deberia separar)
# y finalmente "/home/sebastian/$BKPNAME.tar.gz." dice que deberia dejar el resultado final en
# la carpeta /home/sebastian/ y se deberia llamar (referencia a la variable de arriba)
# bkpSebastian-2016-08-02.tar.gz.01 ... bkpSebastian-2016-08-02.tar.gz.02 ... y asi
tar --exclude-caches \
--exclude="/home/sebastian/.*" \
--exclude="/home/sebastian/Docker\\ Containers"\
--exclude="/home/sebastian/Docker Containers"\
--exclude="/home/sebastian/Dropbox" \
--exclude="/home/sebastian/jsppUnal"\
--exclude="/home/sebastian/perl5" \
--exclude="/home/sebastian/R" \
--exclude="/home/sebastian/R_libs" \
--exclude="/home/sebastian/share" \
--exclude="/home/sebastian/tmp" \
--exclude="/home/sebastian/VirtualBox\ VMs" \
--exclude="/home/sebastian/bkp*" \
-cjv /home/sebastian | \
split -d -b 3900m - "/home/sebastian/$BKPNAME.tar.gz."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment