bupstash(1)

SYNOPSIS

Bupstash encrypted and deduplicated backups.

Run one of the following bupstash subcommands.

bupstash init ... bupstash new-key ... bupstash new-sub-key ... bupstash put ... bupstash list ... bupstash list-contents ... bupstash diff ... bupstash get ... bupstash restore ... bupstash rm ... bupstash recover-removed ... bupstash gc ... bupstash sync ... bupstash exec-with-locks ... bupstash serve ... bupstash help ... bupstash version ...

DESCRIPTION

    files and data in an encrypted bupstash-repostory(7).
    Some notable features of ```bupstash``` include:
    * Automatic deduplication of stored data.
    * Client side encryption of data.
    * Incremental file uploads.
    * A tag based query language.
    * Optional role based encryption and decryption key separation.
    * Remote repositories over ssh ssh.
    * Optional, per ssh key access repository controls.
    * A multi layered approach to security.
    The ```bupstash``` tool itself is divided into subcommands
    that each have their own documentation.
    ## SUBCOMMANDS
    * bupstash-init(1):
      Initialize a bupstash repository.
    * bupstash-new-key(1):
      Create a new primary key for creating/reading repository items.
    * bupstash-new-sub-key(1):
      Derive a sub key for a subset of operations.
    * bupstash-put(1):
      Add data to a bupstash repository.
    * bupstash-get(1):
      Fetch data from the bupstash repository matching a query.
    * bupstash-restore(1):
      Restore a snapshot into a local directory.
    * bupstash-list(1):
      List repository items matching a given query.
    * bupstash-list-contents(1):
      List directory snapshot contents.
    * bupstash-diff(1):
      Diff snapshot contents.
    * bupstash-rm(1):
      Remove repository items matching a given query.
    * bupstash-recover-removed(1):
      Recover removed items that are pending garbage collection.
    * bupstash-gc(1):
      Reclaim diskspace in a repository.
    * bupstash-sync(1):
      Sync items between repositories.
    * bupstash-exec-with-locks(1):
      Exec a command with exclusive locks held on the repository.
    * bupstash-serve(1):
      Serve a repository over stdin/stdout using the bupstash-protocol(7).
    ## EXAMPLES
    ### Initialize a repository and create keys

$ bupstash init -r ssh://$SERVER/home/me/backups $ bupstash new-key -o backups.key

    ### Tell bupstash to use our repository and key by default

$ export BUPSTASH_REPOSITORY=ssh://$SERVER/home/me/backups $ export BUPSTASH_KEY=backups.key

    ### Directory snapshots

$ bupstash put ./some-data ebb66f3baa5d432e9f9a28934888a23d

$ bupstash list-contents id=ebb66f3baa5d432e9f9a28934888a23d drwxr-xr-x 0 2020/11/05 10:42:48 . -rw-r--r-- 177B 2020/07/12 17:13:42 data.txt

    ### List items matching a query

$ bupstash list hostname=$(hostname) id="bcb8684e6bf5cb453e77486decf61685" name="some-file.txt" hostname="my-server" timestamp="2020-07-27 11:26:16"

    ### Incremental uploads

$ bupstash put --send-log /var/backup.sendlog ./some-data ebb66f3baa5d432e9f9a28934888a23d

Second backup is much faster when it reads the send log.

$ bupstash put --send-log /var/backup.sendlog ./some-data ebb66f3baa5d432e9f9a28934888a23d

    ### Capture and save command output

Checks for errors before saving new item.

$ bupstash put --exec name=database.sql pgdump mydatabase 14ebd2073b258b1f55c5bbc889c49db4

    ### Get an item matching a query

$ bupstash get id=bcb8684e6bf5cb453e77486decf61685 some data.

    ### Restore a directory to a previous snapshot

$ bupstash restore --to ./dir name=dir.tar

    ### Remove items matching a query.

$ bupstash rm name=some-data.txt

    ### Wipe a repository

$ bupstash rm --allow-many id=*

    ### Reclaim disk space

$ bupstash gc

    ### Offline decryption keys

Create a key, a put only key, and a metadata (list/rm only) key.

$ bupstash new-key -o backups.key $ bupstash new-sub-key --put -k backups.key -o backups-put.key $ bupstash new-sub-key --list -k backups.key -o backups-metadata.key

... Copy backups.key to secure offline storage ...

Remove primary key

$ shred backups.key

$ bupstash put -k backups-put.key ./data 14ebd2073b258b1f55c5bbc889c49db4

... When you need to list or remove backups, you may use the metadata key ...

$ bupstash list -k backups-metadata.key $ bupstash rm -k backups-metadata.key

... After emergency, get decryption key from offline storage ...

Restore by getting an item and decrypting it using the decryption key.

$ bupstash get -k backups.key id=14ebd2073b258b1f55c5bbc889c49db4 | tar -C ./restore -xf - ```

SEE ALSO

bupstash-repository(7), bupstash-keyfiles(7)