Rclone - prywatne backupy w chmurach

O backupach zazwyczaj piszemy, kiedy coś się zrypie i stracimy jakieś dane. Nie tym razem - dzisiaj chciałbym opisać narzędzie do backupów, z którego zacząłem korzystać parę miesięcy temu.

Szukałem czegoś, co pozwoli mi na robienie backupów na google drive, bo to jedna z najtańszych opcji, no i korzystam już z gmaila. Padło na rclone:

  • pozwala na zaszyfrowanie danych przed wysłaniem ich na serwery (opcjonalnie można też szyfrować nazwy plików i folderów)
  • incremental backup i możliwość ściągania pojedynczych plików
  • pozwala na konfigurację tego jakie pliki mają być wysłane (filtracja bazująca na regułach dotycząca ścieżek/plików)*
  • pozwala na dostęp do pojedynczych plików, można robić zdalnie ls i tree, żeby zobaczyć co mamy
  • w razie czego obsługuje szereg innych usługodawców chmurowych
  • może być wykorzystany do robienia lokalnych backupów na dyski (ale niestety tylko w trybie bez automatycznego kasowania plików)

z negatywnych stron:

  • czas uploadu (na google drive) plików mocno zależy od ilości plików (wiele małych plików wolniej się uploaduje niż jeden duży)
  • system filtracji jest ograniczony, np. nie można zrobić reguły w stylu: /abc/def/*/dalsze_subfoldery/plik (wildcard gdzieś w środku ścieżek)
  • różne ograniczenia związane z konkretnym usługodawcą
  • na google drive trzeba podpiąć kartę płatniczą (nie lubię, wolę przelewy/pay as you go)

W dokumentacji jest opisane jak skonfigurować soft w zależności od usługodawcy, tutaj jest google drive Google drive
Jedna rzecz, której skumanie zajęło mi dużo czasu to to, żeby nie przejmować się token expiry date i żeby nie próbować rzeczy opisywanych w sekcji Service Account support (myślałem że jest to potrzebne, żeby nie odświeżać tokena za każdym razem, ale nie jest to prawda).

Tutaj jest dokumentacja filtrowania plików Rclone Filtering
Mam taki setup, że część danych, które chcę zuploadować znajduje się w /home/... a część w /hdd2/..., w związku z czym wywołuję upload od root’a, a w pliku konfigurującym filtrowanie wykluczam to, czego nie chcę uploadować. Najwięcej problemów miałem z firefoxem, bo ma poroniony układ subfolderów z losowymi nazwami i dużą ilością małych plików (cookies, etc). Jednocześnie nie chciałem wykluczać firefoxa z backupu, bo mam tam zakładki i konfigurację rozszerzeń. Ostatecznie rozwiązałem to tak, co nie jest idealne, bo na innym sprzęcie ten filtr wyglądałby inaczej:

...

# there is loads of crap in firefox's storage
# but should keep the extension settings
- /home/robaki/.mozilla/firefox/hp3qdpg3.default-release/storage/default/http**

...

# backup /home and /hdd2
+ /home/robaki/**
+ /hdd2/**
- *

a skrypt do uploadowania:

#!/bin/bash
echo 'syncing to remote'
rclone sync --progress --filter-from .rclone_filter_file / secret:backup

ta nazwa secret:backup jest zależna od konfiguracji i możecie ją sobie inaczej ustawić.

Skrypt do lokalnego backupu wygląda tak:

#!/bin/bash
echo 'syncing to backup hdd'

#rclone copy /home/testdirectory /media/me/NameOfExternalDrive/testdirectory

hdd="/media/robaki/backup/desktop_bckp/"

# check if directory exists and copy
[ -d $hdd ] && rclone copy --progress --filter-from .rclone_filter_file / $hdd

no, także jeśli ktoś nie ma jeszcze remote backupów to zachęcam - ja się ociągałem i całe szczęście zacząłem to robić zanim dane z lokalnych backupów razem z kompami spłonęły jak byłem na spacerze, czy coś.

2 Likes