Fastest way combine many files into one (tar czf is too slow)
You should check if most of your time are being spent on CPU or in I/O. Either way, there are ways to improve it:
A: don't compress
You didn't mention "compression" in your list of requirements so try dropping the "z" from your arguments list: tar cf
. This might be speed up things a bit.
There are other techniques to speed-up the process, like using "-N " to skip files you already backed up before.
B: backup the whole partition with dd
Alternatively, if you're backing up an entire partition, take a copy of the whole disk image instead. This would save processing and a lot of disk head seek time. tar
and any other program working at a higher level have a overhead of having to read and process directory entries and inodes to find where the file content is and to do more head disk seeks, reading each file from a different place from the disk.
To backup the underlying data much faster, use:
dd bs=16M if=/dev/sda1 of=/another/filesystem
(This assumes you're not using RAID, which may change things a bit)
To repeat what others have said: we need to know more about the files that are being backed up. I'll go with some assumptions here.
Append to the tar file
If files are only being added to the directories (that is, no file is being deleted), make sure you are appending to the existing tar file rather than re-creating it every time. You can do this by specifying the existing archive filename in your tar
command instead of a new one (or deleting the old one).
Write to a different disk
Reading from the same disk you are writing to may be killing performance. Try writing to a different disk to spread the I/O load. If the archive file needs to be on the same disk as the original files, move it afterwards.
Don't compress
Just repeating what @Yves said. If your backup files are already compressed, there's not much need to compress again. You'll just be wasting CPU cycles.
Using tar with lz4 crompression like in
tar cvf - myFolder | lz4 > myFolder.tar.lz4
gives you the best of both worlds (rather good compression AND speed). Expect a compression ratio of about 3 even if your data contains binary files.
Further reading: comparison of compression algorithms How to tar with lz4