Задать вопрос
  • Архивирование и сжатие в линукс?

    @Pr12
    Для архивации используется tar. Она объединяет несколько небольших файлов в один, с целью более удобной последующей передачи, хранения, шифрования. 3
    Для сжатия используются другие утилиты, в зависимости от алгоритма сжатия: zip, bz, xz, lzma и т. д.
    пример

    TEMP_ARCHIVE="/tmp/$(basename "$OUTPUT_ARCHIVE").tar"
    LOG_FILE="./archive_script.log"

    # Создание tar-архива
    tar -cvf "$TEMP_ARCHIVE" "${INPUT_FILES[@]}"
    if [ $? -ne 0 ]; then
    echo "Failed to create tar archive"
    exit 1
    fi

    # Сжатие архива
    START_TIME=$(date +%s)
    if [ "$COMPRESSION_METHOD" == "gzip" ]; then
    gzip -c "$TEMP_ARCHIVE" > "$OUTPUT_ARCHIVE"
    elif [ "$COMPRESSION_METHOD" == "bzip2" ]; then
    bzip2 -c "$TEMP_ARCHIVE" > "$OUTPUT_ARCHIVE"
    fi

    END_TIME=$(date +%s)

    # Проверка успешности сжатия
    if [ $? -ne 0 ]; then
    echo "Failed to compress archive"
    rm "$TEMP_ARCHIVE"
    exit 1
    fi

    # Удаление временного архива
    rm "$TEMP_ARCHIVE"

    # Получение размеров файлов
    ORIGINAL_SIZE=$(du -sb "${INPUT_FILES[@]}" | awk '{total += $1} END {print total}')
    COMPRESSED_SIZE=$(du -sb "$OUTPUT_ARCHIVE" | cut -f1)

    # Логирование информации
    {
    echo "[$(date +"%Y-%m-%d %H:%M:%S")] Created archive '$OUTPUT_ARCHIVE' using '$COMPRESSION_METHOD'"
    echo "Original size: $ORIGINAL_SIZE bytes"
    echo "Compressed size: $COMPRESSED_SIZE bytes"
    echo "Compression time: $(($END_TIME - $START_TIME)) seconds"
    } >> "$LOG_FILE"

    # Успешное завершение
    echo "Archive '$OUTPUT_ARCHIVE' created successfully."
    exit 0
    Ответ написан
    Комментировать