Giter Club home page Giter Club logo

tarcompresscrypt's Introduction

Sonarcloud coverage Sonarcloud Status Sonarcloud Debt Sonarcloud Vulnerabilities

TarCompressCrypt

TarCompressCrypt (TCC) is a command line tool for blazing fast compression + encryption / decompression + decryption

  • package multiple files / folders with tar
  • then use lz4/zstd/brotli for blazing fast compression operations
  • then use openssl for aes256 encryption (native aes-ni instructions support)

Basically, TCC job's is to pipe ( | ) tar, compressor and openssl commands. Natives and official implementations of each command are used for maximum performance.

The other TCC purpose is to prepare the compression job with different strategies. You can create an archive for each folder found in the source folder, and choose how many parallel threads to process the batch for maximum throughput. You can either saturate disk iops, or the CPU depending on your settings, or choose to keep some room on your servers.

TCC is actually used for off-site backup operations on production servers.

How to install :

  • Install the .NET Core 3.1 SDK

  • Install TCC as global tool :

    dotnet tool install -g TCC
    
  • Run TCC in command line :

    tcc --help
    
  • Don't hesitate to use the benchmark mode on your data to find the better speed / compression tradeoff in your case :

    tcc benchmark C:\ToBackupFolder
    

Usage

Compress a data.txt file :

tcc compress data.txt -a Zstd -o Folder

Decompress a file :

tcc decompress data_20201223101528.full.tarzstd -o C:\d\folder

Recommendations :

For maximum performances, you have to backup files from one physical disk, and output archives on another physical disk : iops are the main bottleneck even on a recent SSD.

Current status :

  • beta : use with care, API and archive format are subject to breaking changes. Be sure to keep the version you use actually to be able to decrypt your archives.

Features :

  • password file / asymetric key support
  • packaging + distribution
  • lz4 / brotli / zstd support
  • benchmark mode
  • operation logs
  • differential backup

Roadmap :

  • external storage provider support

Plateform support :

  • Windows
  • Linux

Dependencies :

This project relies on the following external dependencies :

On windows :

All dependencies are downloaded on the first TCC start, and are not included in TCC repository, except tar (for now) Please consult the different project licences.

TCC is inspired from the excellent Squash Compression Benchmark : https://quixdb.github.io/squash-benchmark/

tarcompresscrypt's People

Contributors

grenard-test avatar rducom avatar renardguill avatar seguins avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

fossabot

tarcompresscrypt's Issues

Parallel.Foreach and task partition

Parallel.Foreach prepares partition before execution.
Since compression blocks are of highly different sizes, when finishing, tcc is only running on one thread.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.