Created
September 22, 2019 23:16
-
-
Save ross-spencer/4f09b0df50e951df7c350655e25a41d6 to your computer and use it in GitHub Desktop.
Archivematica compression test bash script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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