Zálohy v Proxmox s RCLONE

Proxmox VE používam už roky, ale zálohovanie som veľmi neriešil. Nie že by som nezálohoval, ale používam len základné zálohovanie na lokálny disk. To znamená, že ak sa poškodí (v mojom prípade) ZFS mirror, tak budú zničené aj zálohy. Áno, zálohy ukladám okrem lokálneho úložiska aj na vyhradený oddiel SSD v pracovnom desktope, ale myslím si, že to tiež nie je dostačujúce.

Obsah

Záloha aspoň na troch miestach

Pred nedávnom bolo veľa mojich sieťových zariadení zničených po búrke, ale server na ktorom beží Proxmox, to prežil. Vtedy som si povedal, že virtuálne stroje a linuxové kontajnery musím zálohovať na bezpečnejšie miesta ako len na lokálne disky Proxmox VE, alebo desktopový SSD. Aj keby som prišiel o akýkoľvek HW, musím byť schopný všetky LXC a KVM v čo najkratšom čase obnoviť. To znamená, že zálohovanie musí byť pravidelné a ukladané, na vzdialený cloud/y. Ideálne je mať zálohy na lokálnom stroji, ďalej na úložných zariadeniach (HDD, USB kľúče …) a na vzdialených cloudoch google drive, mega a pod.

V Proxmoxe je zálohovanie jednoduché

V Proxmoxe je zálohovanie cez webové rozhranie skutočne jednoduché. Kažý LXC a KVM má možnosť rýchlej zálohy. Ďalej môžeme v ponuke Datacenter nastaviť pokročilejší plán zálohovania pre všetky KVM/LXC na konkrétny dátum a čas. Na Proxmox VE máme min. 3 možnosti zálohovania o ktoré sa stará vzdump.

  • Stop mode (úplne zastaviť LXC/KVM a vykonať zálohu)
  • Suspend mode (pozastaviť LXC/KVM a vykonať zálohu)
  • Snapshot mode (záloha sa vykonáva počas behu LXC/KVM)

Ak chceme napr. zálohovať LXC s ID 115, tak v CLI by to mohlo vyzerať nejak takto (použitý mód stop, kompresia zstd). K zálohe môžeme pridať aj poznámku:

vzdump 115 --mode stop --compress zstd --storage local --notes "nasa poznamka"
INFO: starting new backup job: vzdump 115 --compress zstd --mode stop
INFO: filesystem type on dumpdir is 'zfs' -using /var/tmp/vzdumptmp30441_115 for temporary files
INFO: Starting Backup of VM 115 (lxc)
INFO: Backup started at 2024-08-27 10:38:14
INFO: status = running
INFO: backup mode: stop
INFO: ionice priority: 7
INFO: CT Name: alpine-3.18-test
INFO: including mount point rootfs ('/') in backup
INFO: stopping virtual guest
INFO: creating vzdump archive '/var/lib/vz/dump/vzdump-lxc-115-2024_08_27-10_38_14.tar.zst'
INFO: Total bytes written: 626667520 (598MiB, 142MiB/s)
INFO: archive file size: 177MB
INFO: restarting vm
INFO: guest is online again after 20 seconds
INFO: Finished Backup of VM 115 (00:00:20)
INFO: Backup finished at 2024-08-27 10:38:34
INFO: Backup job finished successfully
INFO: notified via target `mail-to-root``

Ja si môžem dovoliť na malú chvíľu LXC a KVM zastaviť úplne, takže používam prvú možnosť (táto záloha je tiež najkonzistejnejšia). Mojím cieľom je, vytvoriť zálohu so zastaveným LXC/KVM. Túto zálohu zašifrovať a poslať na cloud tretej strany (napr. google drive, alebo mega). Ako obvykle, tretej strane nemôžeme dôverovať, preto musíme zálohu pred odoslaním do cloudu zašifrovať. V mojom prípade nebudem mať záujem o synchronizáciu, resp. prírastkové zálohovanie, pretože na serveroch nevykonávam časté zmeny. Úplne bude postačovať spraviť jednu zálohu do týždňa a odoslať ju na cloud (staršie zálohy s cloudu postupne odstraňovať v závislosti od úložnej kapacity).

Rclone

Ako už napovedá nadpis, na tieto účely som sa rozhodol použiť cmd open source aplikáciu rclone. Na internete je možné nájsť množstvo informácii ako rclone funguje. Nám stačí vedieť, že to funguje dobre a dáta sa pri odovzdaní do cloudu zašifrujú na strane klienta. Ak dáta spätne sťahujeme z cloudu, tak sa opäť dešifrujú na strane klienta. Toto je veľmi dôležité, pretože dáta nedokáže dešifrovať ani tretia strana, len rclone (resp. kľúč), ktorým boli zašifrované. Rclone by udajne mal šifrovať pomocou NaCl SecretBox na základe šifry XSalsa20 a Poly1305 pre integritu.

Rclone podporuje množstvo poskytovateľov. Ako som uviedol vyššie, ja som si na zálohy vybral google drive. Každý kto má vytvorený na google účet disponuje kapacitou asi 17 GB. Tento priestor je zdieľaný napr. s gmailom, fotkami a pod. V mojom prípade mám voľných 15 GB, čo mi úplne postačuje. V dobe písania tohto článku google nevyberá za túto službu žiadny poplatok.

Inštalácia rclone

Rclone budeme inštalovať na Proxmox (čiže klasicky Debian) ako root. Prihlásime sa na Proxmox pomocou SSH (alebo priamo cez webové rozhranie Proxmox >_Shell a môžeme inštalovať viacero spôsobmi. Ukážem len prve 2 spôsoby, lebo tretí spôsob je pracnejší.

  • Z repozitárov
  • Cez skript
  • Rozbalením zipu
apt update
apt install rclone
curl https://rclone.org/install.sh | bash

Ja osobne som použil inštalačný skript a pokiaľ je všetko OK, tak by sme na konci inštalácie mali vidieť niečo také:

rclone v1.67.0 has successfully installed.
Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.

Konfigurácia rclone

V predošlej časti skončila inštalácia pravdepodobne úspechom a hláška nás hneď nabáda aby sme pre nastavenie použili príkaz rclone config. Môžeme to tak spraviť

rclone config
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

Skript pre konfiguráciu rclone je napísaný veľmi intuitívne, takže okolo neho nebude veľa komentu. Ešte na začiatku musím upozorniť na overenie google konta cez webový prehliadač. Ak pracujeme na stroji (servery) kde nie je webový prehliadač (Proxmox určite nemá webový prehliadač), tak overenie google konta na získanie tokénu musíme vyriešiť nejakým iným spôsobom (použil som možnosť konfigurácie na inom stroji, ale vyskúšal som tiež SSH tunel a obidve fungovali dobre).

Nastavujeme rclone mimo Proxmox

Čiže na Proxmoxe rclone ukončíme stlačením písmena q a prejdeme na nejaký iný stroj (PC) kde nám funguje niektorý z bežných webových prehliadačov (PC s Windows som neskúšal, ale použil som svoj desktop s linuxom). Predpokladám, že rclone je už nainštalovaný. Teraz môžeme spustiť config

rclone config

Na klávesnici stlačíme písmeno n a enter

No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q>n

Zvolíme si názov pre naš nový remote (v mojom prípade mygdrive) a enter

Enter name for new remote.
name> mygdrive

Následne uvidíme zoznam poskytovateľov. Nás zaujíma google drive a to je číslo 17 a enter. Vo vašom prípade to nemusí byť číslo 17, pretože časom môže pribudnúť ďalší poskytovateľ a ak sa nemýlim, tak rclone radí zoznam podľa abecedy.

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ (fichier)
 2 / Akamai NetStorage
   \ (netstorage)
 3 / Alias for an existing remote
   \ (alias)
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, ChinaMobile, Cloudflare, DigitalOcean, Dreamhost, GCS, HuaweiOBS, IBMCOS, IDrive, IONOS, LyveCloud, Leviia, Liara, Linode, Magalu, Minio, Netease, Petabox, RackCorp, Rclone, Scaleway, SeaweedFS, StackPath, Storj, Synology, TencentCOS, Wasabi, Qiniu and others
   \ (s3)
 5 / Backblaze B2
   \ (b2)
 6 / Better checksums for other remotes
   \ (hasher)
 7 / Box
   \ (box)
 8 / Cache a remote
   \ (cache)
 9 / Citrix Sharefile
   \ (sharefile)
10 / Combine several remotes into one
   \ (combine)
11 / Compress a remote
   \ (compress)
12 / Dropbox
   \ (dropbox)
13 / Encrypt/Decrypt a remote
   \ (crypt)
14 / Enterprise File Fabric
   \ (filefabric)
15 / FTP
   \ (ftp)
16 / Google Cloud Storage (this is not Google Drive)
   \ (google cloud storage)
17 / Google Drive
   \ (drive)
18 / Google Photos
   \ (google photos)
19 / HTTP
   \ (http)
20 / Hadoop distributed file system
   \ (hdfs)
21 / HiDrive
   \ (hidrive)
22 / ImageKit.io
   \ (imagekit)
23 / In memory object storage system.
   \ (memory)
24 / Internet Archive
   \ (internetarchive)
25 / Jottacloud
   \ (jottacloud)
26 / Koofr, Digi Storage and other Koofr-compatible storage providers
   \ (koofr)
27 / Linkbox
   \ (linkbox)
28 / Local Disk
   \ (local)
29 / Mail.ru Cloud
   \ (mailru)
30 / Mega
   \ (mega)
31 / Microsoft Azure Blob Storage
   \ (azureblob)
32 / Microsoft Azure Files
   \ (azurefiles)
33 / Microsoft OneDrive
   \ (onedrive)
34 / OpenDrive
   \ (opendrive)
35 / OpenStack Swift (Rackspace Cloud Files, Blomp Cloud Storage, Memset Memstore, OVH)
   \ (swift)
36 / Oracle Cloud Infrastructure Object Storage
   \ (oracleobjectstorage)
37 / Pcloud
   \ (pcloud)
38 / PikPak
   \ (pikpak)
39 / Proton Drive
   \ (protondrive)
40 / Put.io
   \ (putio)
41 / QingCloud Object Storage
   \ (qingstor)
42 / Quatrix by Maytech
   \ (quatrix)
43 / SMB / CIFS
   \ (smb)
44 / SSH/SFTP
   \ (sftp)
45 / Sia Decentralized Cloud
   \ (sia)
46 / Storj Decentralized Cloud Storage
   \ (storj)
47 / Sugarsync
   \ (sugarsync)
48 / Transparently chunk/split large files
   \ (chunker)
49 / Uloz.to
   \ (ulozto)
50 / Union merges the contents of several upstream fs
   \ (union)
51 / Uptobox
   \ (uptobox)
52 / WebDAV
   \ (webdav)
53 / Yandex Disk
   \ (yandex)
54 / Zoho
   \ (zoho)
55 / premiumize.me
   \ (premiumizeme)
56 / seafile
   \ (seafile)
Storage> 17

client_id a client_secret nebudeme používať, preto len odenterujeme

Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a value. Press Enter to leave empty.
client_id> 
Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret>

Tu vyberieme možnosť 1 aby sme mali plný prístup na úložisko

Option scope.
Comma separated list of scopes that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
 1 / Full access all files, excluding Application Data Folder.
   \ (drive)
 2 / Read-only access to file metadata and file contents.
   \ (drive.readonly)
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ (drive.file)
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ (drive.appfolder)
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ (drive.metadata.readonly)
scope> 1

Tiež nič nevyplňujeme a dáme enter

Option service_account_file.
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a value. Press Enter to leave empty.
service_account_file>

O pokročilejšiu konfiguráciu tiež nemáme záujem, čiže dáme n

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Teraz musíme rclone autentifikovať s google drive (resp. naším kontom) aby si google overil, že sme to skutočne mi, kto žiada prístup do konta skrz rclone. Máme 2 možností (ako som spomínal vyššie).

  • Say Y if the machine running rclone has a web browser you can use

V mojom prípade dávam možnosť y, pretože som na PC, kde mám webový prehliadač

Use web browser to automatically authenticate rclone with remote?
 * Say Y if the machine running rclone has a web browser you can use
 * Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
 
y) Yes (default)
n) No
y/n> y

Automaticky by sme mali byť presmerovaný na webový prehliadač do google konta. Ak sa tak nestane, tak skopírujeme link (viď nižšie, vyznačený tučne) a vložíme ho do webového prehliadača. Ak používame viac google kont, tak použijeme to, ktoré chceme aby sa autentifikovalo s rclone.

2024/08/29 09:55:41 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=60ve_cEdt30LXSSyH54EXw
2024/08/29 09:55:41 NOTICE: Log in and authorize rclone for access
2024/08/29 09:55:41 NOTICE: Waiting for code...

Ak všetko dopadne dobre a získame od google token, tak webový prehliadač by mal ukázať toto

Vrátime sa naspäť do terminálu

2024/08/29 09:55:49 NOTICE: Got code

Ak by sme konfiguráciu rclone vykonávali na stroji, kde nemáme webový prehliadač, tak použijeme možnosť

  • Say N if running rclone on a (remote) machine without web browser access

Prihlásime sa na terminál v PC, kde máme webový prehliadač týmto spôsobom (v mojom prípade je IP adresa Proxmoxu 192.168.1.10). To nám vytvorí SSH tunel medzi Proxmxom a PC, kde je webový prehliadač

ssh -L localhost:53682:localhost:53682 root@192.168.1.10

Ako v predošlom prípade by nás to malo presmerovať do webového prehliadača (ak nepresmeruje, tak skopírujeme link z terminálu) a následne prejdeme rovnakým procesom získanie tokenu. Ďalej pokračujeme takto.

Tu nastavíme možnosť n

Configure this as a Shared Drive (Team Drive)?
 
y) Yes
n) No (default)
y/n> n

Na mieste kde su hviezdičky bude veľmi dlhý zhluk rôznych alfa-numerických znakov. A ak je všetko v poriadku, tak použijeme kláves y a enter

Configuration complete.
Options:
- type: drive
- scope: drive
- token: {"***********"}
- team_drive: 
Keep this "mygdrive" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Tu vidíme zoznám našich všetkých remotes (v našom prípade len jeden mygdrive) a konfiguráciu ukončíme stlačením q

Current remotes:
 
Name                 Type
====                 ====
mygdrive             drive
 
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

To je vlastne všetko. Teraz môžeme na google disk kopírovať súbory ale aj celé adresáre. V domovskom adresári vytvoríme napr. pod-adresár backup. Do adresára môžeme uložiť nejaké dokumenty (fotky, textové dokumenty, hudbu, videa, jednoducho akýkoľvek obsah). Potom celý adresár pošleme na google disk. Pozor !!! V závislosti od veľkosti adresára a rýchlosti nášho internetového pripojenia, to môže trvať dlhšiu dobu.

mkdir ~/backup
rclone copy ~/backup/ mygdrive:/backup

Po odoslaní obsahu adresára prejdeme cez webový prehliadač na náš google disk a adresár s celým obsahom by sme mali mať v bezpečí. Pokiaľ ho z google disku neodstránime, tak tam zostane. Ak sa nám v PC poškodí disk, alebo súbory nejakým nedopatrením vymažeme (stratíme), tak na google disku stále budú a môžeme si ich preniesť znova k sebe takto:

rclone copy mygdrive:/backup/ ~/backup

Preniesť súbory z google disku nemusíme len cez terminál, pokojne môžeme prenášať priamo cez web. Teraz už vieme pomocou rclone prenášať súbory na google disk, ale aj späť na náš miestny disk. Konfiguračný súbor rclone odporúčam uložiť na nejaké bezpečné miesto (dôležitý je hlavne token). Konfiguračný súbor nájdeme na tomto mieste (príp. viď druhý riadok)

cat /home/<user>/.config/rclone/rclone.conf 
cat ~/.config/rclone/rclone.conf 

Môže to vyzerať asi takto (z bezpečnostných dôvodov token neuvádzam)

[mygdrive]
type = drive
scope = drive
token = {"********"}
team_drive = 

Šifrujeme s rclone

Ak by sme nepotrebovali zálohy z Proxmoxu šifrovať, tak obsah konfiguračného súboru prenesieme z nášho PC na Proxmox a máme hotovo. Proxmox sám o sebe zatiaľ nevie zálohy šifrovať, preto musíme využiť iný spôsob šifrovania. Rclone som si vybral práve preto, lebo pred odoslaním súboru na cloud ho dokáže zašifrovať. Teraz znova spustíme rclone konfiguráciu a vytvoríme ďalšiu vrstvu šifrovania nad existujúcim remote. Príkazy spúšťame stále z PC (nie z Proxmoxu)

rclone config

Vidíme, že jeden remote mygdrive tam už je, nad ktorým budeme vytvárať vrstvu šifrovania. Môžeme dať n.

Current remotes:
 
Name                 Type
====                 ====
mygdrive             drive
 
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n

Názov pre remote môžeme zvoliť napr. mygdrive_crypt

Enter name for new remote.
name> mygdrive_crypt

Nastavíme Encrypt/Decrypt, v našom prípade číslo 13

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ (fichier)
 2 / Akamai NetStorage
   \ (netstorage)
 3 / Alias for an existing remote
   \ (alias)
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, ChinaMobile, Cloudflare, DigitalOcean, Dreamhost, GCS, HuaweiOBS, IBMCOS, IDrive, IONOS, LyveCloud, Leviia, Liara, Linode, Magalu, Minio, Netease, Petabox, RackCorp, Rclone, Scaleway, SeaweedFS, StackPath, Storj, Synology, TencentCOS, Wasabi, Qiniu and others
   \ (s3)
 5 / Backblaze B2
   \ (b2)
 6 / Better checksums for other remotes
   \ (hasher)
 7 / Box
   \ (box)
 8 / Cache a remote
   \ (cache)
 9 / Citrix Sharefile
   \ (sharefile)
10 / Combine several remotes into one
   \ (combine)
11 / Compress a remote
   \ (compress)
12 / Dropbox
   \ (dropbox)
13 / Encrypt/Decrypt a remote
   \ (crypt)
14 / Enterprise File Fabric
   \ (filefabric)
15 / FTP
   \ (ftp)
16 / Google Cloud Storage (this is not Google Drive)
   \ (google cloud storage)
17 / Google Drive
   \ (drive)
18 / Google Photos
   \ (google photos)
19 / HTTP
   \ (http)
20 / Hadoop distributed file system
   \ (hdfs)
21 / HiDrive
   \ (hidrive)
22 / ImageKit.io
   \ (imagekit)
23 / In memory object storage system.
   \ (memory)
24 / Internet Archive
   \ (internetarchive)
25 / Jottacloud
   \ (jottacloud)
26 / Koofr, Digi Storage and other Koofr-compatible storage providers
   \ (koofr)
27 / Linkbox
   \ (linkbox)
28 / Local Disk
   \ (local)
29 / Mail.ru Cloud
   \ (mailru)
30 / Mega
   \ (mega)
31 / Microsoft Azure Blob Storage
   \ (azureblob)
32 / Microsoft Azure Files
   \ (azurefiles)
33 / Microsoft OneDrive
   \ (onedrive)
34 / OpenDrive
   \ (opendrive)
35 / OpenStack Swift (Rackspace Cloud Files, Blomp Cloud Storage, Memset Memstore, OVH)
   \ (swift)
36 / Oracle Cloud Infrastructure Object Storage
   \ (oracleobjectstorage)
37 / Pcloud
   \ (pcloud)
38 / PikPak
   \ (pikpak)
39 / Proton Drive
   \ (protondrive)
40 / Put.io
   \ (putio)
41 / QingCloud Object Storage
   \ (qingstor)
42 / Quatrix by Maytech
   \ (quatrix)
43 / SMB / CIFS
   \ (smb)
44 / SSH/SFTP
   \ (sftp)
45 / Sia Decentralized Cloud
   \ (sia)
46 / Storj Decentralized Cloud Storage
   \ (storj)
47 / Sugarsync
   \ (sugarsync)
48 / Transparently chunk/split large files
   \ (chunker)
49 / Uloz.to
   \ (ulozto)
50 / Union merges the contents of several upstream fs
   \ (union)
51 / Uptobox
   \ (uptobox)
52 / WebDAV
   \ (webdav)
53 / Yandex Disk
   \ (yandex)
54 / Zoho
   \ (zoho)
55 / premiumize.me
   \ (premiumizeme)
56 / seafile
   \ (seafile)
Storage> 13

Tu nastavíme mygdrive:

Option remote.
Remote to encrypt/decrypt.
Normally should contain a ':' and a path, e.g. "myremote:path/to/dir",
"myremote:bucket" or maybe "myremote:" (not recommended).
Enter a value.
remote> mygdrive:

Odporúča sa aby sme nastavili číslo 1, to znamená, že bude zašifrovaný aj názov súboru. Ak by sme nechceli mať zašifrované názvy súborov na google disku (kvôli prehľadnosti), tak použijeme možnosť 3 (ja som použil možnosť 3).

Option filename_encryption.
How to encrypt the filenames.
Choose a number from below, or type in your own value of type string.
Press Enter for the default (standard).
   / Encrypt the filenames.
 1 | See the docs for the details.
   \ (standard)
 2 / Very simple filename obfuscation.
   \ (obfuscate)
   / Don't encrypt the file names.
 3 | Adds a ".bin", or "suffix" extension only.
   \ (off)
filename_encryption> 3

Tiež môžeme nastaviť aj šifrovanie názvu adresára. Nie je to povinné, ale poskytovateľ cloudu nebude mať ani tušenie aký je skutočný názov adresára. Odporúča sa možnosť 1, ale opäť kvôli prehľadnosti som použil možnosť 2

Option directory_name_encryption.
Option to either encrypt directory names or leave them intact.
NB If filename_encryption is "off" then this option will do nothing.
Choose a number from below, or type in your own boolean value (true or false).
Press Enter for the default (true).
 1 / Encrypt directory names.
   \ (true)
 2 / Don't encrypt directory names, leave them intact.
   \ (false)
directory_name_encryption> 2

Najdôležitejšie je ďalšie nastavenie a to je heslo pre šifrovanie obsahu súborov. Heslo si môžeme nechať vygenerovať systémom, alebo použijeme vlastné. Toto heslo si musíme zapamätať. Ja som použil vlastné heslo (v konfiguračnom súbore bude toto heslo zahashované).

Option password.
Password or pass phrase for encryption.
Choose an alternative below.
y) Yes, type in my own password
g) Generate random password
y/g> y
Enter the password:
password: *********************
Confirm the password:
password: *********************

Môžeme použiť ďalšie heslo aby to bolo ešte bezpečnejšie. Táto možnosť sa tiež odporúča a heslo by malo byť odlišné od predošlého heslo (inak by to nemalo zmysel).

Option password2.
Password or pass phrase for salt.
Optional but recommended.
Should be different to the previous password.
Choose an alternative below. Press Enter for the default (n).
y) Yes, type in my own password
g) Generate random password
n) No, leave this optional password blank (default)
y/g/n> y

Enter the password:
password: *********************
Confirm the password:
password: *********************

Rozšírenú konfiguráciu nebudeme používať, čiže dáme n

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Keď je všetko v poriadku, tak potvrdíme y

Configuration complete.
Options:
- type: crypt
- remote: mygdrive:backup
- filename_encryption: off
- directory_name_encryption: false
- password: *** ENCRYPTED ***
- password2: *** ENCRYPTED ***
Keep this "mygdrive_crypt" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Ukončíme q

Current remotes:
 
Name                 Type
====                 ====
mygdrive             drive
mygdrive_crypt       crypt
 
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

Vidíme, že pribudol ďalší remote mygdrive_crypt. Príp. si remotes vieme zobraziť aj v budúcnosti pomocou príkazu

rclone listremotes
mygdrive:
mygdrive_crypt:

Teraz keď odošleme súbory na google drive, tak všetko bude šifrované (ak sme nastavili šifrovanie názvov súborov a adresárov, tak budú šifrovane aj tie).

rclone copy ~/backup mygdrive:/backup 

Ak by sme teraz stiahli súbory z google disku mimo rclone, tak by nám boli na 2 veci, pretože sú zašifrované. Veľmi dôležité je aby sme si konfiguračný súbor rclone uložili na bezpečne miesto, lebo bez neho by sme neboli schopný už nikdy dešifrovať zálohy.

cat /home/<user>/.config/rclone/rclone.conf 

Obsah súboru si môžeme nakopírovať pokojne do nejakého textového súboru a odoslať ho na nejaký iný email (odporúčam použiť iné konto, ktoré používame s rclone), alebo iné bezpečné miesto.

[mygdrive]
type = drive
scope = drive
token = {"********"}
team_drive = 
 
[mygdrive_crypt]
type = crypt
remote = mygdrive:
filename_encryption = off
directory_name_encryption = false
password = ********
password2 = ********

Konfigurácia rclone na Proxmox

Do teraz sme všetko vykonávali a testovali na PC mimo Proxmox. Teraz konfiguráciu musíme preniesť na Proxmox. Prejdeme do terminálu na Proxmoxe a zistíme cestu ku konfiguračnému súboru

rclone config file
Configuration file doesn't exist, but rclone will use this path:
/root/.config/rclone/rclone.conf

Otvoríme konfiguračný súbor na zápis a obsah tam jednoducho vložíme. Z bezpečnostných dôvodov je token a heslo vyhviezdičkované.

nano /root/.config/rclone/rclone.conf
[mygdrive]
type = drive
scope = drive
token = {"********"}
team_drive = 
 
[mygdrive_crypt]
type = crypt
remote = mygdrive:
filename_encryption = off
directory_name_encryption = false
password = ********
password2 = ********

Čo sa týka konfigurácie rclone na Proxmoxe, tak to je všetko.

Vytvárame zálohu a odosielame ju na google drive

Ako som už spomínal na začiatku tohto článku, tak na zálohy sa v Proxmoxe používa vzdump. Prvý príkaz vytvorí zálohu a druhým príkazom ju odošleme na google drive

vzdump 115 --mode stop --compress zstd --storage local --notes "moja poznamka k lxc/kvm"
rclone copy /var/lib/vz/dump/vzdump-lxc-115-2024_09_01-16_00_38.tar.zst mygdrive_crypt:/backup

V závislosti od veľkosti zálohy a rýchlosti nášho internetového pripojenia sa záloha prenesie na google disk. Keď sa cez webový prehliadač prihlásime na google disk, tak tam uvidíme jeden adresár a v ňom jeden súbor. Ak sme pri nastavovaní rclone použili šifrovanie názvov súborov a adresárov, tak na google disku by sme mohli vidieť niečo podobné tomu

adresár: vchdsv6qq7vh0g81uu52u9kiro
súbor: q68e7adv0gmlf02400ltrnn44akqqoitrv3sracfke1na4bpdt2cd86u93tj0kaefg4lp1j657s9g

Pôvodné názvy adresára a súboru, príp. ak sme nešifrovali názvy, tak to uvidíme takto. Všimnime si, že na konci súboru je navyše prípona .bin (to je šifrovanie).

adresár: backup/backup
súbor: vzdump-lxc-115-2024_09_01-15_23_12.tar.zst.bin

Ak o zálohy na lokálnom Proxmox úložisku prídeme, alebo sa poškodia, môžeme si ich z google disku nakopírovať späť na Proxmox. Použijeme na to tento príkaz. Ako vidíme stačí prehodiť zdroj a cieľ.

rclone copy mygdrive_crypt:/backup/vzdump-lxc-115-2024_09_01-16_00_38.tar.zst /var/lib/vz/dump/

Problém nastáva vtedy, ak prídeme o celý Proxmox, alebo o zálohy na Proxmoxe a nepoznáme mená súborov, ktoré sme pred tým zálohovali. Tu sa natíska otázka, či je potrebné šifrovať aj názvy súborov. Ak však používame jediný adresár na zálohy z Proxmoxu, tak môžeme funkciu copy nastaviť na cely adresár a nemusíme poznať názvy súborov. Príkaz by potom vyzeral následovne

rclone copy mygdrive_crypt:/backup/ /var/lib/vz/dump/

Záver

V dnešnom článku ste sa dozvedeli ako je možné kopírovať miestne súbory (adresáre) priamo na google disk pomocou jednoduchých príkazov copy v nešifrovanej, ale tiež šifrovanej podobe. Ďalšou možnosťou by bolo použiť mount google disku priamo do nášho systému (to však nebolo cieľom tohto článku). V nasledujúcom článku by som chcel proces zálohovania a odosielania záloh na google disk trocha zautomatizovať. Buď si vyhľadám, či už existujú nejaké skripty, alebo sa pokúsim napísať nejaké vlastné.

Použitá literatúra

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *