Archive Benchmark Scripts: Optimize Compression Efficiency
Explore default and maximal compression benchmarking scripts for various archive formats. Learn how to maximize compression efficiency and speed up your compression tasks with parallel compression techniques.
Default Compression Benchmarking Script for Various Formats
#!/bin/bash
# Define the source directory and file extensions
source_dir="$HOME/pictures"
extensions=(
"zip"
"zipx"
"cbz"
"tar"
"tar.gz"
"tar.bz2"
"tar.xz"
"tar.lzma"
"tar.lz"
"tgz"
"tbz"
"tbz2"
"zst"
"rar"
"7z"
"xz"
"bz2"
"gz"
"z"
"lz4"
"lzma"
)
# Loop through each extension and create a compressed file
for ext in "${extensions[@]}"; do
output_file="pictures.$ext"
case "$ext" in
"zip" | "zipx" | "cbz")
zip -r "$output_file" "$source_dir"
;;
"tar" | "tar.gz" | "tar.bz2" | "tar.xz" | "tar.lzma" | "tar.lz" | "tgz" | "tbz" | "tbz2" | "zst")
tar -cf "$output_file" -C "$source_dir" .
;;
"rar")
rar a "$output_file" "$source_dir"
;;
"7z")
7z a "$output_file" "$source_dir"
;;
"xz")
xz "$source_dir" -c > "$output_file"
;;
"bz2")
tar -cjf "$output_file" -C "$source_dir" .
;;
"gz")
tar -czf "$output_file" -C "$source_dir" .
;;
"z")
tar -c "$source_dir" | gzip -n - > "$output_file"
;;
"lz4")
tar -c "$source_dir" | lz4 -9 - > "$output_file"
;;
"lzma")
tar -c "$source_dir" | lzma -9 - > "$output_file"
;;
*)
echo "Unsupported extension: $ext"
;;
esac
done
Maximal Compression Benchmarking Script for Various Formats
#!/bin/bash
# Define the source directory
source_dir="$HOME/pictures"
# Create a function to create archives with maximum compression
create_archive() {
local ext="$1"
local output_file="pictures.$ext"
case "$ext" in
"zip" | "zipx" | "cbz")
zip -r9 "$output_file" "$source_dir"
;;
"tar" | "tar.gz" | "tar.bz2" | "tar.xz" | "tar.lzma" | "tar.lz" | "tgz" | "tbz" | "tbz2" | "zst")
tar --use-compress-program=pigz -cf "$output_file" -C "$source_dir" .
;;
"rar")
rar a -m5 "$output_file" "$source_dir"
;;
"7z")
7z a -mx9 "$output_file" "$source_dir"
;;
"xz")
xz -9e "$source_dir" -c > "$output_file"
;;
"bz2")
tar --use-compress-program=pbzip2 -cf "$output_file" -C "$source_dir" .
;;
"gz")
tar --use-compress-program=pigz -czf "$output_file" -C "$source_dir" .
;;
"z")
tar -c "$source_dir" | zstd -19 -T0 -o "$output_file"
;;
"lz4")
tar -c "$source_dir" | lz4 -9 - > "$output_file"
;;
"lzma")
tar -c "$source_dir" | lzma -9 - > "$output_file"
;;
*)
echo "Unsupported extension: $ext"
;;
esac
}
# Loop through each extension and create a compressed file
for ext in "${extensions[@]}"; do
create_archive "$ext"
done
Example: Parallel compressing
#!/bin/bash
source_dir="$HOME/pictures"
num_jobs=$(($(nproc) + 1))
compress_file() {
local file="$1"
local ext="$2"
local output_file="${file%.*}.$ext"
case "$ext" in
"gz")
gzip -c "$file" > "$output_file"
;;
"bz2")
bzip2 -c "$file" > "$output_file"
;;
"xz")
xz -c "$file" > "$output_file"
;;
"zst")
zstd -c "$file" > "$output_file"
;;
"lz4")
lz4 -9 -k "$file" "$output_file"
;;
"lzma")
lzma -9 -k "$file" "$output_file"
;;
"rar")
rar a -m5 "$output_file" "$file"
;;
"7z")
7z a -mx9 "$output_file" "$file"
;;
"zip")
zip -r9 "$output_file" "$file"
;;
"zipx")
zip -r9 "$output_file" "$file"
;;
"cbz")
zip -r9 "$output_file" "$file"
;;
# Add other cases as needed
*)
echo "Unsupported extension: $ext"
;;
esac
}
export -f compress_file
export source_dir
extensions=("gz" "bz2" "xz" "zst" "lz4" "lzma" "rar" "7z" "zip" "zipx" "cbz" /* other extensions */)
for ext in "${extensions[@]}"; do
find "$source_dir" -type f -print0 | xargs -0 -n 1 -P "$num_jobs" -I {} bash -c 'compress_file "$@"' _ {} "$ext"
done