monitorize_save_file.sh: Cambiados los echo por printf

monitorize_save_file.sh: Ya guarda en ficheros tar comprimidos
This commit is contained in:
2023-04-07 08:44:51 +02:00
parent 4a960d6487
commit 4b752ca5db
+49 -36
View File
@@ -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