Skip to content
Snippets Groups Projects
backups.md 3.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • # Backups
    
    Backups should be checked now and then. Some common tasks are listed below.
    You'll have to get the correct username from the vault.
    
    ## Accessing backup hosts
    
    We use two different borg backup hosts: A primary one and an offsite one.
    The URL format for the primary one is
    
    
        ssh://u236610@u236610.your-storagebox.de:23/~/backup/<hostname>/repo
    
    
    while for the offsite one it's
    
    
        ssh://zh1905@zh1905.rsync.net:22/~/backup/<hostname>
    
    
    In the examples below, we'll just abbreviate the full address as `<backup_address>`.
    If you want to use one of the examples below, you'll have to fill in the
    placeholder with your desired full address to the backup repository. For instance,
    
    
        misc/borg.sh list <backup_address>
    
        misc/borg.sh list ssh://u236610@u236610.your-storagebox.de:23/~/backup/homedir.archlinux.org/repo
    
    
    A convenience wrapper script is available at `misc/borg.sh` which makes sure you
    use the correct keyfile for the given server.
    
    ## Listing backups in repository
    
    This allows you to check which backups are currently available for the given server:
    
        misc/borg.sh list <backup_address>
    
    ## Listing files in a specific backup
    
    Once you figured out which backup you want to use, you can list the files inside via:
    
        misc/borg.sh list <backup_address>::<archive_name>
    
    ## Getting info for a repository
    
    Check how large all backups for a server are:
    
        misc/borg.sh info <backup_address>
    
    ## Getting info for a specific backup
    
    Check how large a single backup is and how long it took to perform:
    
        misc/borg.sh info <backup_address>::<archive_name>
    
    ## Mounting a backup
    
    One convenient way to access the files inside an archive is to mount it:
    
        mkdir mnt
        misc/borg.sh mount <backup_address>::<archive_name> mnt
    
    You might want to mount it with `-o ignore_permissions` depending on which user
    you're using to access the backup.
    
    ## Extracing files from a backup
    
    Alternatively, if you don't want to mount it and instead want to extract files directly, you can
    do so. Either extract the whole backup:
    
        misc/borg.sh extract <backup_address>::<archive_name>
    
    or just a sub-directory:
    
        misc/borg.sh extract <backup_address>::<archive_name> backup/srv/gitlab
    
    
    ## Special backups
    
    ### Mariadb
    
    
    For Mariadb backups are made using mariabackup to `backup_mysql_dir`. Backups
    are made and can be restored using the `mariadb-backup` tool. See also
    [official MariaDB docs](https://mariadb.com/kb/en/full-backup-and-restore-with-mariabackup/).
    
    For PostgreSQL backups are made using pg_dump to `backup_postgres_dir`.
    
    
    Restoring backups can be done with `pg_restore`. See also [official PostgreSQL docs](https://www.postgresql.org/docs/current/app-pgrestore.html).
    
    
    ## Adding a new server
    
    Adding a new server to be backed up goes as follows:
    
    * Make sure the new servers host key is synced to `docs/ssh-known_hosts.txt` if not run:
    
          ansible-playbook playbooks/tasks/sync-ssh-hostkeys.yml
    
    * Add the server to [borg-clients] in hosts
    
    * Run the borg role on u236610.your-storagebox.de to allow the new machine to create backups
    
          ansible-playbook playbooks/hetzner_storagebox.yml
    
    * Run the borg role for rsync.net to allow the new machine to create backups
    
          ansible-playbook playbooks/rsync.net.yml
    
    * Run the borg role on the new machine to initialize the repository
    
          ansible-playbook playbooks/$machine.yml -t borg