Skip to content

Instantly share code, notes, and snippets.

@ross-spencer
Created September 22, 2019 23:16
Show Gist options
  • Save ross-spencer/4f09b0df50e951df7c350655e25a41d6 to your computer and use it in GitHub Desktop.
Save ross-spencer/4f09b0df50e951df7c350655e25a41d6 to your computer and use it in GitHub Desktop.
Archivematica compression test bash script
#!/bin/bash
set -u
# Archivematica compresses uses three tools, at five compression levels. It
# does not use LZMA2 but including it here to understand how much faster it is
# than LZMA.
#
# * 7z bzip2
# * 7z lzma
# * 7z copy
#
# * tar pbzip2
# * tar gzip
#
# Not in Archivematica:
#
# * 7z lzma2
#
# Compression levels. 1, 3, 5, 7, 9.
#
SCANDIR=$1
# Clear file system caches to make tests as clean as possible.
drop_caches () {
sh -c "/bin/echo 3 > /proc/sys/vm/drop_caches"
}
levels=( 1 3 5 7 9 )
# bzip2
for i in "${levels[@]}"
do
echo "============================"
drop_caches
fname="/tmp/${i}bz2.7z"
echo "-------------------"
echo "7z bzip2: level" $i
echo "-------------------"
time /usr/bin/7z a -bd -t7z -y -m0=bzip2 -mx=$i -mta=on -mtc=on -mtm=on -mmt=on $fname $SCANDIR
sleep 5
du -h $fname
done
# lzma
for i in "${levels[@]}"
do
echo "============================"
drop_caches
fname="/tmp/${i}lzma1.7z"
echo "-------------------"
echo "7z lzma: level" $i
echo "-------------------"
time /usr/bin/7z a -bd -t7z -y -m0=lzma -mx=$i -mta=on -mtc=on -mtm=on -mmt=on $fname $SCANDIR
sleep 5
echo "-------------------"
du -h $fname
echo "-------------------"
done
# lzma2
for i in "${levels[@]}"
do
echo "============================"
drop_caches
fname="/tmp/${i}lzma2.7z"
echo "-------------------"
echo "7z lzma2: level" $i
echo "-------------------"
time /usr/bin/7z a -bd -t7z -y -m0=lzma2 -mx=$i -mta=on -mtc=on -mtm=on -mmt=on $fname $SCANDIR
sleep 5
echo "-------------------"
du -h $fname
echo "-------------------"
done
# copy
for i in "${levels[@]}"
do
echo "============================"
drop_caches
fname="/tmp/${i}copy.7z"
echo "-------------------"
echo "7z copy: level" $i
echo "-------------------"
time /usr/bin/7z a -bd -t7z -y -m0=copy -mx=$i -mta=on -mtc=on -mtm=on -mmt=on $fname $SCANDIR
sleep 5
echo "-------------------"
du -h $fname
echo "-------------------"
done
# parallel bzip
for i in "${levels[@]}"
do
echo "============================"
drop_caches
fname="/tmp/{$i}pbzip.tar.bz"
echo "-----------------"
echo "pbzip2: level" $i
echo "-----------------"
time /bin/tar -c --directory . $SCANDIR | /usr/bin/pbzip2 --compress -$i > $fname
sleep 5
echo "-------------------"
du -h $fname
echo "-------------------"
done
# gzip
for i in "${levels[@]}"
do
echo "============================"
drop_caches
fname="/tmp/${i}gzip.tar.gz"
echo "-------------------"
echo "tar gzip: level" $i
echo "-------------------"
time /bin/tar -c --directory . $SCANDIR | /bin/gzip -$i > $fname
sleep 5
echo "-------------------"
du -h $fname
echo "-------------------"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment