diff --git a/kopia_backup/readme.md b/kopia_backup/readme.md index 7a71196..68f7eef 100644 --- a/kopia_backup/readme.md +++ b/kopia_backup/readme.md @@ -19,78 +19,126 @@ Kopia is an open source backup utility with basicly all modern features.
Cross-platform, deduplication, encryption, compression, multithreaded speed, cloud storage support, CLI and GUI versions, snapshots mounting,... -Written in golang, +Written in golang. In this setup kopia cli is installed directly on the host system.
A script is created that backs up the entire docker directory and /etc locally.
-Cronjob is set to execute this script daily. +Systemd service and timer are used to run the backup periodicly. -The repository is also pruned on each run of the script - -old archives are deleted while keeping the ones fitting the retention rules -in the script.
-One backup per day for last 7 days, last 4 weeks, last 6 months are kept. +# Some aspects of Kopia + +* backup configuration is stored in a repository where backups will be stored
+ this includes global policy, that is global in sense of repo, not all of kopia +* you connect and disconnect from a repository before working with it,
+ only one repository can be connected at time +* currently to ignore some folders, one can create `CACHEDIR.TAG` with specific + [content](https://bford.info/cachedir/) and set policy: `--ignore-cache-dirs true` +* Maintence is automatic +* .. # Files and directory structure ``` /home/ -├── ~/ -│ └── docker/ -│ ├── container-setup #2 -│ ├── container-setup #1 -│ ├── ... +│ └── ~/ +│ └── docker/ +│ ├── container-setup #2 +│ ├── container-setup #1 +│ ├── ... │ /mnt/ - └── mirror/ - └── docker_host_kopia/ - +│ └── mirror/ +│ └── KOPIA/ +│ └── arch_docker_host/ +│ +/opt/ + └── kopia-backup-home-etc.sh ``` -* `docker_backup/` - borg repository directory containg the backups -* `borg_backup.sh` - the backup script that adds new archive in to the repository -* `borg_backup.log` - log file with the dates of backups - -Only `borg_backup.sh` has to be provided.
-Repo directory is created by `borg init` command -and the log file is created on the first run. - - # The setup -#### Install kopia +#### install kopia for arch linux, kopia is on AUR `yay kopia-bin` -#### Backing up using kopia +#### repo creation and policy use of sudo so that kopia has access everywhere
config files are therefore in `/root/config/kopia` -- `mkdir /mnt/mirror/docker_host_kopia`
-- `sudo kopia repository create filesystem --path /mnt/mirror/docker_host_kopia`
-- `sudo kopia repository connect filesystem --path /mnt/mirror/docker_host_kopia`
-- `sudo kopia snapshot create /home/spravca/docker`
+- `sudo kopia policy get --global` +- `sudo kopia policy list` +- `sudo kopia policy set --global --ignore-cache-dirs true --keep-annual 1 --keep-monthly 6 --keep-weekly 4 --keep-daily 14 --keep-hourly 0 --keep-latest 14` + + + +- `mkdir -p /mnt/mirror/KOPIA/docker_host_kopia`
+- `sudo kopia repository create filesystem --path /mnt/mirror/KOPIA/docker_host_kopia`
+- `sudo kopia repository connect filesystem --path /mnt/mirror/KOPIA/docker_host_kopia`
+- `sudo kopia repository status` +- `sudo kopia snapshot create /home/spravca/docker /etc`
- `sudo kopia snapshot list`
- `sudo kopia mount k7e2b0a503edd7604ff61c68655cd5ad7 /mnt/tmp &`
- `sudo umount /mnt/tmp`
+#### the backup script -#### The backup script +`/opt/kopia-backup-home-etc.sh` +``` +#!/bin/bash +#sudo kopia policy set --global --keep-annual 1 --keep-monthly 6 --keep-weekly 4 --keep-daily 14 --keep-hourly 0 --keep-latest 14 +REPOSITORY_PATH='/mnt/mirror/KOPIA/docker_host_kopia' +BACKUP_THIS='/home /etc' +export KOPIA_PASSWORD='aaa' +kopia repository connect filesystem --path $REPOSITORY_PATH +kopia snapshot create $BACKUP_THIS +kopia repository disconnect +``` -### Manual run - - -### Automatic execution +### Automatic execution using systemd # Accessing the backup files -# Extra info +# Mounting using systemd + +* the name of mount and automount files MUST correspond with the path
+ instead of `/` a `-` is used, but otherwise it must be the mounting path in name +* for mounting that does not fail on boot, and mounts the target only on request + enable automount file, not mount file, so:
+ `sudo systemctl enable mnt-mirror.automount` + +`mnt-mirror.mount` +```ini +[Unit] +Description=3TB truenas mirror mount + +[Mount] +What=//10.0.19.11/Mirror +Where=/mnt/mirror +Type=cifs +Options=rw,username=kopia,password=aaa,file_mode=0644,dir_mode=0755,uid=1000,gid=1000 + +[Install] +WantedBy=multi-user.target +``` + +`mnt-mirror.automount` +```ini +[Unit] +Description=3TB truenas mirror mount + +[Automount] +Where=/mnt/mirror + +[Install] +WantedBy=multi-user.target +``` # Remote backup diff --git a/kopia_backup/script b/kopia_backup/script new file mode 100644 index 0000000..844859d --- /dev/null +++ b/kopia_backup/script @@ -0,0 +1,11 @@ +#!/bin/bash + +#sudo kopia policy set --global --ignore-cache-dirs true --keep-annual 1 --keep-monthly 6 --keep-weekly 4 --keep-daily 14 --keep-hourly 0 --keep-latest 14 + +REPOSITORY_PATH='/mnt/mirror/KOPIA/docker_host_kopia' +BACKUP_THIS='/home /etc' +export KOPIA_PASSWORD='aaa' + +kopia repository connect filesystem --path $REPOSITORY_PATH +kopia snapshot create $BACKUP_THIS +kopia repository disconnect