Code Source – SentinelLog: compressor.sh

#!/usr/bin/env bash
# =================================================================================================
# Moteur de compression et d'export du rapport 
# =================================================================================================

compress_and_export(){
    # Definition du repertoire de sortie et du nom du fichier compresse suivant la nomemclature report_AAAAMMDD_HHMMSS.tar.gz
    # Sur la base du repertoire et du nom du fichier, on definit le nom de l'archive en chemin absolu
    local output_dir="${1:-}" # recuperation du premier argument CLI, s'il n'est pas defini, on recupere la valeur par defaut (cf main.sh)
    local timestamp=$(date +"%Y%m%d_%H%M%S")
    local archive_name="${output_dir}/report_${timestamp}.tar.gz"

    # Creation de l'archive
    local temp_doc=$(mktemp) # la commande mktemp permet de creer un fichier temporaire que nous allons transformer par la suite
    cat > "${temp_doc}" # on recupere les donnees en sortie standard de l'extracteur qu'on envoie dans le fichier temporaire
    tar -czf "${archive_name}" -C "$(dirname "${temp_doc}")" "$(basename "${temp_doc}")" --transform="s/$(basename "${temp_doc}")/sanitized_extract.log/" 2>/dev/null
    
    # Recuperation du code de sortie de l'operation precedente, visant a creer l'archive et suppression du fichier temporaire 
   local exit_code=$?
   rm -f "${temp_doc}"
        
    # Si le code de sortie est correct (0), affichage du nom de l'archive creee
    # Dans le cas contraire, affichage d'un message d'erreur indiquant que la creation de l'archive a echoue
    if [[ ${exit_code} -eq 0 ]] ; then 
        echo "${archive_name}"
        return 0 
    else 
        echo "[!] ERREUR: Echec de la creation de l'archive compressee." >&2
        return 1
    fi 
}

Vous aimerez aussi...