Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/the8472/fastar

Fast tar archiver
https://github.com/the8472/fastar

cli hdd linux tar-archive

Last synced: 14 days ago
JSON representation

Fast tar archiver

Awesome Lists containing this project

README

        

[![Version](https://img.shields.io/crates/v/fastar.svg)](https://crates.io/crates/fastar)

# fastar

A faster equivalent of `tar -cT <(find . -type f)`, optimized for tarring many small files stored on HDDs.

Optimizations compared to gnu tar:

* directory traversal based on physical disk layout. see [platter-walk](https://github.com/the8472/platter-walk) crate
* readaheads across multiple files at once to keep the drive's command queue filled. see [reapfrog](https://github.com/the8472/reapfrog) crate
* drops disk caches for files once they are read to prevent disk buffer thrashing.

Limitations compared to gnu tar:

* arguments must be directories
* only archives regular files, not symlinks or empty directories
* xattrs are not included
* sparse files are zero-filled

## Building

* indirect dependencies: libz, liblzo headers
* `cargo build --release`

## Benchmarks

```
# ffcnt . -s
files: 6680901
bytes: 245271028476

# echo 3 > /proc/sys/vm/drop_caches ; tar -c . | pv -at > /dev/null
^C0:02:45 [ 2.4MiB/s]

# echo 3 > /proc/sys/vm/drop_caches ; tar -cT <(ffcnt --ls --type f --leaf-order content .) | pv -at > /dev/null
^C0:02:50 [4.11MiB/s]

# echo 3 > /proc/sys/vm/drop_caches ; fastar . | pv -at > /dev/null
^C0:02:51 [9.28MiB/s]
```