diff --git a/monitorize_save_file.sh b/monitorize_save_file.sh index 0010667..4f149ad 100755 --- a/monitorize_save_file.sh +++ b/monitorize_save_file.sh @@ -1,49 +1,62 @@ #!/bin/bash -readonly USAGE=" -USAGE: -$(basename "$0") [FILE]" - -function help_message() { - echo "$USAGE" -} - -# check if there is any parameter +# Comprueba los parametros if [ "$#" -ne 1 ]; then - help_message + printf "Uso: %s FILE_NAME\n" "$(basename "$0")" exit 0 -fi - -# check if the parameter is valid -if ! test -f "$1"; then - echo "File $1 does not exist." - exit 0 -fi - -# variables -readonly FILE_DIR="$(cd "$(dirname "$1")" && pwd)" -readonly FILE="$(basename "$1")" - -OLD_DATE="$(date -r "$1" "+%Y-%m-%d_%H:%M:%S")" -cp "${FILE_DIR}/${FILE}" "${FILE_DIR}/${FILE}.${OLD_DATE}" -if ! test -f "${FILE_DIR}/${FILE}.tar"; then - tar -C "${FILE_DIR}" -cf "${FILE_DIR}/${FILE}.tar" "${FILE}.${OLD_DATE}" - echo "File ${FILE}.tar created." - echo "${FILE}.${OLD_DATE}" else - tar -C "${FILE_DIR}" -rf "${FILE_DIR}/${FILE}.tar" "${FILE}.${OLD_DATE}" - echo "${FILE}.${OLD_DATE}" + # Comprueba si existe el fichero + if ! test -f "$1"; then + printf "File %s does not exist.\n" "$1" + exit 0 + fi fi -rm "${FILE_DIR}/${FILE}.${OLD_DATE}" +# Variables +FILE_DIR="$(cd "$(dirname "$1")" && pwd)" +readonly FILE_DIR + +FILE_NAME="$(basename "$1")" +readonly FILE_NAME + +SUFFIX=".tar.gz" +readonly SUFFIX + +# Crea una copia del fichero y le añade al nombre la fecha +OLD_DATE="$(date -r "$1" "+%Y-%m-%d_%H:%M:%S")" +cp "${FILE_DIR}/${FILE_NAME}" "${FILE_DIR}/${FILE_NAME}.${OLD_DATE}" + +# Añade la copia del fichero al fichero .tar.gz o crea uno nuevo +if ! test -f "${FILE_DIR}/${FILE_NAME}${SUFFIX}"; then + tar -C "${FILE_DIR}" -caf "${FILE_DIR}/${FILE_NAME}${SUFFIX}" "${FILE_NAME}.${OLD_DATE}" + printf "File %s${SUFFIX} created.\n" "${FILE_NAME}" +else + gunzip "${FILE_DIR}/${FILE_NAME}${SUFFIX}" + tar -C "${FILE_DIR}" -uaf "${FILE_DIR}/${FILE_NAME}.tar" "${FILE_NAME}.${OLD_DATE}" + gzip "${FILE_DIR}/${FILE_NAME}.tar" +fi +printf "%s\n" "${FILE_NAME}.${OLD_DATE} added" +rm "${FILE_DIR}/${FILE_NAME}.${OLD_DATE}" + +# Comprueba cada cierto tiempo si el fichero se ha modificado while true; do - sleep 5 + sleep 60 + # Obten la fecha del fichero DATE="$(date -r "$1" "+%Y-%m-%d_%H:%M:%S")" + # Si la fecha del fichero ha cambiado respecto a la que tenia almacenada es porque es una versión + # nueva del fichero y se procede a hacer una copia en el fichero .tar.gz if [ "$DATE" != "$OLD_DATE" ]; then - echo "${FILE}.${DATE}" - cp "${FILE_DIR}/${FILE}" "${FILE_DIR}/${FILE}.${DATE}" - tar -C "${FILE_DIR}" -rf "${FILE_DIR}/${FILE}.tar" "${FILE}.${DATE}" - rm "${FILE_DIR}/${FILE}.${DATE}" + # Crea una copia del fichero y le añade al nombre la fecha + cp "${FILE_DIR}/${FILE_NAME}" "${FILE_DIR}/${FILE_NAME}.${DATE}" + # Añade la copia del fichero al fichero .tar.gz + gunzip "${FILE_DIR}/${FILE_NAME}${SUFFIX}" + tar -C "${FILE_DIR}" -uaf "${FILE_DIR}/${FILE_NAME}.tar" "${FILE_NAME}.${DATE}" + gzip "${FILE_DIR}/${FILE_NAME}.tar" + # Elimina la copia del fichero + rm "${FILE_DIR}/${FILE_NAME}.${DATE}" + # Actualiza la fecha del fichero a la de la última copia OLD_DATE=$DATE + # Informa por pantalla + printf "%s\n" "${FILE_NAME}.${DATE} added" fi done