Linux: Copybenchmarks in verschiedenen Szenarien

Wer stand nicht schon einmal vor dem Problem viele Dateien kopieren zu müssen? Sei es zum Austausch von Festplatten oder aus anderen Gründen.

Nachdem ich mir zuletzt mit einem befreundeten Arbeitskollegen 2h in einem Frankfurter McDonalds um die Ohren gehauen habe (3 Uhr Nachts), während ein Linux Server ca. 30GB IMAP Ordner und E-Mails kopierte (mit cp), habe ich mir gedacht es muss einen besseren (schnelleren) Weg geben.
Und je nachdem wie man dieses Thema bisher angeht gibt es den auch, soviel sei schon mal vorab verraten.

Das Testsystem sieht wie folgt aus:
– Debian
– HDD Festplatte
– tar, rsync und cp aus den Debian Packages

Verglichen wird die Performance von:
– tar
– rsync
– cp

Testscript

#!/bin/bash
set -e

clear_cache() {
    sync ; echo 3 > /proc/sys/vm/drop_caches
}

d_=$(mktemp -d -p .)
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.11.tar.xz -O- | tar xJ -C $d_ -f -

echo -n "cp performance"
cd_=$(mktemp -d -p .)
clear_cache
time ( cp -Rp $d_ $cd_ )
echo

echo -n "tar performance"
td_=$(mktemp -d -p .)
clear_cache
time ( tar -cp $d_ -f - | ( tar -xp -C $td_ -f - ) )
echo

echo -n "rsync performance"
rd_=$(mktemp -d -p .)
clear_cache
time ( rsync -a $d_ $rd_ )
echo

rm -rf $d_ $cd_ $td_ $rd_

Das Ergebnis sieht dann wie folgt aus:

cp performance
real    1m9.003s
user    0m0.808s
sys     0m6.372s

tar performance
real    1m26.742s
user    0m1.392s
sys     0m8.408s

rsync performance
real    0m59.525s
user    0m7.328s
sys     0m7.780s

Als dieser Beitrag 2008 entstanden ist, war die Performance von cp deutlich schlechter als heute. Nichtsdestotrotz ist es egal was man macht, solange es mit Files zu tun hat sollte man zuerst an rsync denken.

Ach ja wie löscht man unter Linux am schnellsten den Inhalt eines sehr großen (Anzahl) Verzeichnisses? Natürlich auch mit rsync :)

rsync -a --delete $(mktemp -d)/ loesch_mich/

Schreibe einen Kommentar