Coder Social home page Coder Social logo

restic / restic Goto Github PK

View Code? Open in Web Editor NEW
25.8K 242.0 1.5K 67.18 MB

Fast, secure, efficient backup program

Home Page: https://restic.net

License: BSD 2-Clause "Simplified" License

Makefile 0.01% Go 99.77% Shell 0.21% Dockerfile 0.02%
go restic backup deduplication dedupe secure-by-default

restic's Introduction

Documentation Build Status Go Report Card

Introduction

restic is a backup program that is fast, efficient and secure. It supports the three major operating systems (Linux, macOS, Windows) and a few smaller ones (FreeBSD, OpenBSD).

For detailed usage and installation instructions check out the documentation.

You can ask questions in our Discourse forum.

Quick start

Once you've installed restic, start off with creating a repository for your backups:

$ restic init --repo /tmp/backup
enter password for new backend:
enter password again:
created restic backend 085b3c76b9 at /tmp/backup
Please note that knowledge of your password is required to access the repository.
Losing your password means that your data is irrecoverably lost.

and add some data:

$ restic --repo /tmp/backup backup ~/work
enter password for repository:
scan [/home/user/work]
scanned 764 directories, 1816 files in 0:00
[0:29] 100.00%  54.732 MiB/s  1.582 GiB / 1.582 GiB  2580 / 2580 items  0 errors  ETA 0:00
duration: 0:29, 54.47MiB/s
snapshot 40dc1520 saved

Next you can either use restic restore to restore files or use restic mount to mount the repository via fuse and browse the files from previous snapshots.

For more options check out the online documentation.

Backends

Saving a backup on the same machine is nice but not a real backup strategy. Therefore, restic supports the following backends for storing backups natively:

Design Principles

Restic is a program that does backups right and was designed with the following principles in mind:

  • Easy: Doing backups should be a frictionless process, otherwise you might be tempted to skip it. Restic should be easy to configure and use, so that, in the event of a data loss, you can just restore it. Likewise, restoring data should not be complicated.

  • Fast: Backing up your data with restic should only be limited by your network or hard disk bandwidth so that you can backup your files every day. Nobody does backups if it takes too much time. Restoring backups should only transfer data that is needed for the files that are to be restored, so that this process is also fast.

  • Verifiable: Much more important than backup is restore, so restic enables you to easily verify that all data can be restored.

  • Secure: Restic uses cryptography to guarantee confidentiality and integrity of your data. The location the backup data is stored is assumed not to be a trusted environment (e.g. a shared space where others like system administrators are able to access your backups). Restic is built to secure your data against such attackers.

  • Efficient: With the growth of data, additional snapshots should only take the storage of the actual increment. Even more, duplicate data should be de-duplicated before it is actually written to the storage back end to save precious backup space.

Reproducible Builds

The binaries released with each restic version starting at 0.6.1 are reproducible, which means that you can reproduce a byte identical version from the source code for that release. Instructions on how to do that are contained in the builder repository.

News

You can follow the restic project on Mastodon @resticbackup or subscribe to the project blog.

License

Restic is licensed under BSD 2-Clause License. You can find the complete text in LICENSE.

Sponsorship

Backend integration tests for Google Cloud Storage and Microsoft Azure Blob Storage are sponsored by AppsCode!

Sponsored by AppsCode

restic's People

Contributors

aawsome avatar alrs avatar aneesh-n avatar armhold avatar brualan avatar ckemper67 avatar dependabot[bot] avatar dron-666 avatar fawick avatar fd0 avatar fw42 avatar garrmcnu avatar greatroar avatar howeyc avatar ifedorenko avatar jniggemann avatar kitone avatar klauspost avatar konidev20 avatar lbausch avatar metalsp0rk avatar mholt avatar michaeleischer avatar mikix avatar mungomat avatar plumbeo avatar prattmic avatar rawtaz avatar tbm avatar thndrbrrr avatar

Stargazers

 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

restic's Issues

khepri init should require -r

khepri init creates repository in current directory if -r not provided. Repository init should require -r.

 ./khepri init /mnt/usb/backup                
enter password for new backend: 
enter password again: 
created khepri backend at khepri-backup
.-(~GOPATH/bin)----------------------------------------------------------------------------------------------(fd@leno)-
`--> ls
khepri  khepri-backup

Configuration File

Configuration File to store the default settings. Just run "restic" to create next snapshot based on settings in config file.

Connect #288

Integrity Check

Implement Integrity Checker (check snapshots and existance of related data files)

  • Verify specific snapshot (Download Data + decrypt + verify checksum)
  • Verify remote snapshot (Do not download data, just verify existance of data files and their size)

Decide license

khepri is currently licensed as 2-clause-BSD, stay with it or change to GPL?

Check Timestamps, efficient backup

If a user initiates a backup, availability of previous snapshots shall be verified. Based on the snapshot, local verification shall take place wether new backup for a particular file or directory is required.

implement restic -V

  • Frontend: Output version information
  • Backend: define version during compile time

Compare snapshots

Implement feature to compare two or more snapshots, show differences of files + size

  • Show added files/directories
  • Show deleted files/directories
  • Show modified files/directories

Use case: find a specific version of a file, compare directory structure of multiple snapshots, etc.

Implement Compression

This issue is a tracking issue for the purposes of tracking discussions and other issues/PRs related to the request for implementing compression.

The following issues/PRs are related to this topic (and may therefore be closed in favor of this one):

Define Command Line Structure

Define Command Line Parameter structure.

Sub commands:

backup
restore
show

Show parameters should work for restore

Find File in Snapshots

Find specific file or Directory in Snapshots

  • limit number of snapshots
  • limit date range
  • return snapshot ID + Snapshot Information

Store ID of base snapshot

New Snapshot should have a reference to the old snapshot it is based upon (store ID of base snapshot in new snapshot metadata)

List all Snapshots

List following Parameters:

  • creation date + timestamp (Default in Local time, Option to show Z-Time)
  • Snapshot ID (shortened SHA 256, Option to show full SHA 256 ID)
  • Source Hostname
  • Source Directory

Delete Files from Existing Snapshot

In cases of accidential backup of e.g. too large files, I would like to be able to delete specific files or directories (incl. recursion) from existing snapshots

Correct symlink bug with older kernels

Linked to #24
Integration test on wercker showed:
https://app.wercker.com/#build/546878b3c6bc8c046515bef0

testfiles: test/test-backup.sh
error for /tmp/khepri-testsuite-uavS1t/fake-data-restore/fake-data/0/tests/testfile-symlink: too many levels of symbolic links
error for /tmp/khepri-testsuite-uavS1t/fake-data-restore/fake-data/0/tests: too many levels of symbolic links
error for /tmp/khepri-testsuite-uavS1t/fake-data-restore/fake-data/0: too many levels of symbolic links
error for /tmp/khepri-testsuite-uavS1t/fake-data-restore/fake-data: too many levels of symbolic links
error executing command "restore": too many levels of symbolic links
run: test-backup failed!

Make blobs read only

Set files with blobs read-only so that users do not accidentally delete blobs.

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.