diff --git a/xymon/tar.client.logfiles.sh b/xymon/tar.client.logfiles.sh index 9fe4fe8..6e9843d 100755 --- a/xymon/tar.client.logfiles.sh +++ b/xymon/tar.client.logfiles.sh @@ -32,6 +32,9 @@ xz_compression_lvl="-9" ## Get current directory name current_dir=${PWD##*/} +## Count the number of files +match_files=$(find . -type f -newermt "${date_start}" -not -newermt "${date_end}" -not -iname "*.tar*" | wc -l) + ## Archive name tar_file_name="${date_year}.${current_dir}${xz_compression_lvl}.tar.xz" @@ -41,18 +44,22 @@ tar_file_name="${date_year}.${current_dir}${xz_compression_lvl}.tar.xz" if [ -s "${tar_file_name}" ]; then printf "${c_redb}%-6b${c_reset}\n" "ERROR : ${tar_file_name} already exists. Please manage this directory manually or remove the archive and restart." exit 1 +fi + +# If some files match +if [ ! ${match_files} -eq "0" ]; then + [ "${debug}" -eq "0" ] && printf "${c_magentab}%-6b${c_reset}\n" "DEBUG : Create an archive for ${current_dir} files between ${date_start} and ${date_end} (${match_files} files) using XZ's compression level : ${xz_compression_lvl}." + + ## Get the list of files between the 2 dates and ignore tar files + #find . -type f -newermt "${date_start}" -not -newermt "${date_end}" -not -iname "*.tar*" -print0 | tar cJf "${tar_file_name}" --null -T - + + ## Check previous return code and if the archive exists with size > 0 + if [ "${?}" -eq "0" ] && [ -s "${tar_file_name}" ]; then + [ "${debug}" -eq "0" ] && printf "${c_magentab}%-6b${c_reset}\n" "DEBUG : ${tar_file_name} successfully created, the files can be deleted." + #find . -type f -newermt "${date_start}" -not -newermt "${date_end}" -not -iname "*.tar*" -delete + fi else - [ "${debug}" -eq "0" ] && printf "${c_magentab}%-6b${c_reset}\n" "DEBUG : Create an archive for ${current_dir} files between ${date_start} and ${date_end} using XZ's compression level : ${xz_compression_lvl}." + [ "${debug}" -eq "0" ] && printf "${c_magentab}%-6b${c_reset}\n" "DEBUG : Skip ${current_dir}, no files found between ${date_start} and ${date_end}." fi -## Get the list of files between the 2 dates and ignore tar files -find . -type f -newermt "${date_start}" -not -newermt "${date_end}" -not -iname "*.tar*" -print0 | tar cJf "${tar_file_name}" --null -T - - -## Check previous return code and if the archive exists with size > 0 -if [ "${?}" -eq "0" ] && [ -s "${tar_file_name}" ]; then - [ "${debug}" -eq "0" ] && printf "${c_magentab}%-6b${c_reset}\n" "DEBUG : ${tar_file_name} successfully created, the files can be deleted." - find . -type f -newermt "${date_start}" -not -newermt "${date_end}" -not -iname "*.tar*" -delete -fi - - exit 0