kekavigi.xyz

Pencadangan dengan Restic

Alternatif metode dan kode bash untuk cron

Ditulis tanggal oleh A. Keyka Vigiliant. Revisi terakhir pada tanggal . Konten diterbitkan dibawah lisensi CC BY-SA 4.0.


Simpan berkas berikut di lokasi yang aman, yang tergantung dari model bahaya (threat model) Anda juga mengartikan perlu mengatur agar berkas hanya dapat diakses root:

#!/bin/bash

# Alamat folder pencadangan
export RESTIC_REPOSITORY="<path>"
export THINGS_TO_BACKUP = "/path1 /path2 /path3 file1 file2"

# Tingkat kompresi yang digunakan pencadangan
export RESTIC_COMPRESSION=max

# Banyak pembacaan berkas secara paralel 
export RESTIC_READ_CONCURRENCY=32

# Membaca sandi dari berkas `restic.gpg` yang terenkripsi menggunakan GPG
# Pertimbangan: berkas sandi tidak dapat* diretas tanpa sandi GPG, dan
# Ketika menggunakan KeepassXC sebagai keyring, lebih mudah mengetahui
# semua proses yang memerlukan ke akses sandi GPG
export RESTIC_PASSWORD=$(gpg --decrypt $PASSWORD_PATH/restic.gpg 2> /dev/null)

# =========
# Buat log hasil pencadangan
export LOGFILE="$HOME/result.txt"
exec &> >(tee "$LOGFILE")
date

restic unlock
restic backup $THING_TO_BACKUP

# Menghapus cadangan-cadangan lawas
restic forget \
    --keep-hourly 72 \
    --keep-within-daily 31d \
    --keep-within-weekly 52m \
    --keep-within-monthly 3y \
    --keep-within-yearly 20y
restic prune

Selingan: mengatur berkas agar hanya dapat diakses root:

sudo chown root:root /path/to/backup_config.sh
sudo chmod 700 /path/to/backup_config.sh

Selingan: Sertakan berkas tersebut menggunakan crontab -e (mungkin perlu menggunakan sudo, tergantung bagaimana Anda mengatur berkas itu) agar pencadangan terjadi secara berkala. Misal, dengan pengaturan setiap dua jam sekali:

0 */2 * * * /path/to/backup_config.sh

Catatan

Jangan lupa untuk sesekali mengecek integritas pencadangan, misal lewat restic check --read-data.

Catatan kaki