class: center, middle # restic
.sub[2018/04/28, Lukas Prokop] --- # restic is a … 1. free 2. fast 3. easy 4. secure 5. efficient 6. verifiable backup software. --- # restic is free ``` Restic is licensed under BSD 2-Clause License. ``` On github with 3500 commits, 4100 stars, 300 forks. Blog: [restic turns four](https://restic.net/blog/2018-04-06/restic-turns-four) (3 weeks ago)
65 % of all commits --- # restic is fast * computes differences * uploads only chunk updates ``` new copy: 580 GB → 103h (1.58MiB/s) existing copy: 580 GB → 4min 40s (2.342GiB/s) ``` --- # restic is easy Single binary deployment (go style) (→ Linux, Darwin, FreeBSD, OpenBSD, Windows). ``` /home/meisterluk/bin/restic-0.8.3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped ``` git-like CLI ``` restic -r /mnt/backup init restic -r /mnt/backup backup /home restic -r /mnt/backup snapshots restic -r /mnt/backup restore -t /home ``` --- # restic is secure * file encryption with AES-256-CTR * authentication by Poly1305-AES * encryption key by scrypt (KDF) * data integrity by SHA256 local 😎
remote 😈 But remote data might get deleted. --- # restic is efficient * full backups * do not store data twice * JSON file stores chunk refs and metadata * content stored in Content-Addressable Storage (CAS) --- # Content-Defined Chunking
--- # Content-Defined Chunking
--- # Content-Defined Chunking
--- # Content-Defined Chunking
--- # Content-Defined Chunking
--- # Content-Defined Chunking
--- # Content-Defined Chunking
--- # Content-Defined Chunking
--- # Content-Defined Chunking
--- # Content-Defined Chunking
--- # Content-Defined Chunking * rolling checksums (Rabin fingerprints) * 1 chunk: min 512 KB, avg 1MB, max 8MB * one byte changes in the middle
⇒ max 2 chunks change --- ``` . ├── hosts │ └── lagrange ├── ids │ ├── 19c43c21 │ ├── 5d47be02 │ ├── 6270daa5 │ ├── aa7ec1ac │ └── e2d2c9cb ├── snapshots │ ├── 2018-04-15T18:17:37+02:00 │ ├── 2018-04-16T16:58:31+02:00 │ ├── 2018-04-28T03:40:29+02:00 │ └── latest -> 2018-04-28T03:40:29+02:00 └── tags └── home ``` --- # restic is verifiable ``` restic check ``` to verify integrity of repository state. Repository is write-only. ``` restic prune ``` will delete unreferenced files. --- # Backends
--- # Admin Zen 1. Nobody wants backup, everybody wants restore. 2. There's more to save than just the files. 5. Consistent against corruption. 10. Secure from disasters. 11. Protected from prying eyes. [adminzen.org](https://adminzen.org/) --- # Quick demo ``` export RESTIC_REPOSITORY="/tmp/backup" export RESTIC_PASSWORD="helloworld" restic init restic backup my-folder restic snapshots restic restore -t /tmp/restore latest restic mount ~/mnt restic check ``` `du -sh my-folder` gives 2.1GB.
→ backup 43s
→ restore 15s --- class: center, middle # restic - backups done right! Website: [restic.net](https://restic.net/)
github: [@restic](https://github.com/restic)
#restic on irc.freenode.net Thanks for being awesome! https://saythanks.io/to/restic
http://lukas-prokop.at/talks/glt18-restic/