Az rclone és a pCloud: felhőtárhely kezelése Linux alatt

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

Az rclone egy parancssoros program, amelyet sokan „a felhőtárhelyek rsync-jeként”¹ emlegetnek. Több tucat tárhelyszolgáltatót ismer, köztük a pCloudot is, és mindegyiket ugyanazokkal a parancsokkal lehet kezelni. A pCloud svájci–amerikai fejlesztésű felhőszolgáltatás, amely nyílt, dokumentált API-t² kínál, ezért az rclone-nal jól együttműködik.

A hivatalos pCloud-kliens kényelmes, de grafikus felületre épül, és kevés beállítási lehetőséget ad. Az rclone ezzel szemben szkriptelhető, pontosan látni, mit csinál, és olyan funkciókat is tud, mint a titkosítás, a sávszélesség-korlátozás vagy a részletes naplózás. Ez a cikk a telepítéstől az automatikus mentésig végigvezet a legfontosabb lépéseken. Feltétel, hogy a terminál használata ne legyen idegen, és a fájlrendszer alapfogalmait ismered.

Van hozzá video is:
https://youtu.be/XH-gikzL_7A

1. Telepítés

Linux Mint alatt az rclone és a csatoláshoz szükséges FUSE-támogatás³ a csomagkezelőből is telepíthető:

sudo apt install rclone fuse3
rclone version

A tárolók verziója gyakran régebbi. Ha frissebb kell, a fejlesztők telepítőszkriptje a legújabb kiadást teszi fel:

curl https://rclone.org/install.sh | sudo bash

Aki szívesen fordít forrásból, az rclone Go nyelven íródott, így a forráskód letöltése után egyetlen go build paranccsal elkészül a bináris. A hivatalos repóban a teljes leírás megtalálható.

2. A pCloud „remote” létrehozása

Az rclone a tárhelyeket remote-oknak⁴ nevezi. Minden remote-hoz tartozik egy név, egy típus és a hozzáféréshez szükséges adatok. A beállítást az interaktív varázsló végzi:

rclone config

A lépések:

  1. n – új remote, a neve legyen például pcloud.
  2. A tárhelytípusok listájából válaszd a pCloud-ot (beírhatod: pcloud).
  3. A client_id és a client_secret mezőt hagyd üresen.
  4. Az advanced config kérdésre válaszolj n-nel.
  5. Az auto config kérdésre y: megnyílik a böngésző, ahol bejelentkezel a pCloudba, és jóváhagyod a hozzáférést.

A bejelentkezés után az rclone egy tokent⁵ kap, és ezt menti a konfigurációs fájlba. A fájl helyét ez a parancs mutatja:

rclone config file

Alapértelmezésben ez a ~/.config/rclone/rclone.conf. A token jelszó értékű, ezért ne tedd fel nyilvános repóba, és ne küldd el másnak.

Szerver vagy grafikus felület nélküli gép

Ha azon a gépen nincs böngésző, az auto config kérdésre válaszolj n-nel. Egy másik, böngészős gépen futtasd ezt:

rclone authorize pcloud

A parancs kiír egy tokent, amelyet visszamásolsz a szerveren futó varázslóba.

Európai fiók

A pCloudnak két adatközponti régiója van: az amerikai és az európai. Ha a fiókod európai, az API-hoz az eapi.pcloud.com állomásnevet kell használni. Az újabb rclone-verziók ezt a bejelentkezéskor általában felismerik, de ha hitelesítési hibát kapsz, ellenőrizd a hostname mezőt:

rclone config show pcloud

3. Az első lépések: listázás és másolás

A remote nevét kettőspont követi, utána jön a tárhelyen belüli útvonal. Az rclone lsd pcloud: tehát a tárhely gyökerét jelenti.

rclone lsd pcloud:                    # mappák listázása
rclone ls pcloud:Dokumentumok         # fájlok listázása méretekkel
rclone lsf pcloud:Dokumentumok        # rövid, szkriptbarát lista
rclone about pcloud:                  # felhasznált és szabad hely
rclone size pcloud:Fenykepek          # egy mappa teljes mérete
rclone ncdu pcloud:                   # interaktív helyfoglalás-böngésző

A legfontosabb három parancs a copy, a sync és a move:

rclone copy ~/Dokumentumok pcloud:Mentes -P
rclone sync ~/Dokumentumok pcloud:Mentes -P
rclone move ~/Letoltesek/kesz pcloud:Archivum -P

A -P kapcsoló folyamatjelzőt ír ki. A három parancs közötti különbség lényeges:

  • A copy csak másol, a célban semmit nem töröl.
  • A sync a célt a forrás pontos tükrévé teszi, vagyis ami a forrásban nincs meg, azt a célból törli.
  • A move átmásolja a fájlokat, majd a forrásból törli őket.

A copy és a sync is idempotens⁶: ugyanazt kétszer lefuttatva nem keletkezik duplikáció, a második futás csak az eltéréseket pótolja.

4. Biztonságos szinkronizálás

A sync a leggyakoribb hibaforrás, mert egy felcserélt forrás–cél sorrend a legfontosabb adataid törlését is jelentheti. Néhány szokás felvétele sokat segít.

Mindig próbáld előbb szárazon. A --dry-run kapcsoló kiírja, mit csinálna a program, de nem módosít semmit:

rclone sync ~/Dokumentumok pcloud:Mentes --dry-run -v

Korlátozd a törlések számát. Ha egy futás a megadottnál több fájlt törölne, az rclone leáll:

rclone sync ~/Dokumentumok pcloud:Mentes --max-delete 20

Archiváld a felülírt és törölt fájlokat. A --backup-dir a régi változatokat egy külön mappába teszi, ahelyett hogy eldobná őket:

rclone sync ~/Dokumentumok pcloud:Mentes \
  --backup-dir pcloud:Mentes_archivum/$(date +%F)

Ez a megoldás az egyszerű, de hatékony „változatkezelés” alapja: minden napról megmarad, mi változott.

Ellenőrizd az eredményt. Az rclone check a forrást és a célt hasonlítja össze:

rclone check ~/Dokumentumok pcloud:Mentes --one-way

A pCloud API ellenőrző összegeket⁷ is ad a fájlokról, ezért az rclone a méret és az idő mellett a tartalmat is össze tudja vetni. Az --one-way azt jelenti, hogy csak a forrásból hiányzó vagy eltérő elemeket keresi a célban.

5. Szűrés

Gyakran nem a teljes mappát szeretnéd feltölteni. Az rclone szűrési szabályai⁸ mintákkal dolgoznak:

# ideiglenes fájlok és a gyorsítótár kihagyása
rclone copy ~/Projektek pcloud:Projektek \
  --exclude '*.tmp' --exclude 'node_modules/**' --exclude '.cache/**'

# csak a képek
rclone copy ~/Fenykepek pcloud:Fenykepek \
  --include '*.{jpg,jpeg,png}'

# csak az elmúlt 7 napban módosított fájlok
rclone copy ~/Dokumentumok pcloud:Friss --max-age 7d

# 100 MB-nál nagyobb fájlok kihagyása
rclone copy ~/Letoltesek pcloud:Letoltesek --max-size 100M

Ha sok szabályod van, érdemes egy fájlba gyűjteni, és a --filter-from kapcsolóval megadni:

rclone sync ~/Projektek pcloud:Projektek --filter-from ~/.config/rclone/szurok.txt

A fájlban soronként egy szabály áll, - jellel kezdődik a kizárás, + jellel a belefoglalás:

- *.tmp
- node_modules/**
- .cache/**
+ **

A szabályok sorrendje számít: az első találó szabály dönt, ezért az utolsó + ** sor jelzi, hogy minden más mehet.

6. Csatolás könyvtárként

Ha a pCloudot úgy szeretnéd használni, mint egy helyi mappát, az rclone képes csatolni. Ehhez szükség van a már említett FUSE-ra.

mkdir -p ~/pcloud
rclone mount pcloud: ~/pcloud --vfs-cache-mode writes

A parancs előtérben fut, a terminál lezárásával a csatolás is megszűnik. Háttérben így indítható:

rclone mount pcloud: ~/pcloud --vfs-cache-mode writes --daemon

Leválasztás:

fusermount3 -u ~/pcloud

A VFS gyorsítótár módjai

A csatolt tárhely nem valódi lemez, ezért az rclone egy virtuális fájlrendszer-réteget⁹ (VFS) használ a fájlok kezelésére. A --vfs-cache-mode kapcsoló szabja meg, mennyit tárol helyben:

Mód Viselkedés Mikor jó
off semmit nem tárol, a fájlok csak soros olvasással és írással érhetők el egyszerű fájlmásolás
minimal csak a megnyitott, írható és olvasható fájlokat gyorsítótárazza ritkán használt, kisebb igények
writes az írt fájlokat gyorsítótárazza általános használatra jó kompromisszum
full az olvasott és írt adatokat is tárolja videólejátszás, alkalmazások közvetlenül a csatolásról

A full módnál érdemes korlátot szabni a helyi gyorsítótárnak:

rclone mount pcloud: ~/pcloud \
  --vfs-cache-mode full \
  --vfs-cache-max-size 5G \
  --dir-cache-time 10m

Automatikus csatolás belépéskor

A csatolás a felhasználói systemd¹⁰ szolgáltatással indítható el. A ~/.config/systemd/user/rclone-pcloud.service fájl tartalma:

[Unit]
Description=pCloud rclone mount
After=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/rclone mount pcloud: %h/pcloud --vfs-cache-mode writes
ExecStop=/bin/fusermount3 -u %h/pcloud

[Install]
WantedBy=default.target

Aktiválás:

systemctl --user daemon-reload
systemctl --user enable --now rclone-pcloud.service

Az rclone pontos útvonalát a which rclone parancs mutatja meg. Ha a szolgáltatás nem indul, a naplót a journalctl --user -u rclone-pcloud.service paranccsal nézheted meg.

7. Titkosítás a crypt remote-tal

A pCloud a fájlokat a szolgáltatónál tárolja, ezért ha érzékeny adatot raksz fel, érdemes kliensoldali titkosítást¹¹ használni. Az rclone erre a crypt típusú remote-ot kínálja, amely a már meglévő pCloud-remote fölé épül.

A rclone config varázslóban hozz létre egy új remote-ot titkos néven, típusa legyen crypt, a remote mező pedig mutasson egy pCloud-mappára, például pcloud:Titkositott. A varázsló kéri a jelszót, és opcionálisan egy második jelszót, a „sót”. Mindkettőt őrizd meg máshol is, mert elvesztésük esetén az adatok nem állíthatók vissza.

Használata ugyanolyan, mint bármely más remote-é:

rclone copy ~/Szemelyes titkos:Szemelyes -P
rclone ls titkos:
rclone ls pcloud:Titkositott

A második paranccsal a titkosított oldalt látod olvashatóan, a harmadikkal azt, ahogy a pCloud tárolja: értelmetlen nevű, titkosított fájlokat. Alapértelmezésben a fájlnevek is titkosítva vannak, ami a szolgáltató felől nézve extra védelmet ad.

Fontos tudni, hogy a titkosított fájlokat a pCloud webes felületén nem tudod elolvasni vagy előnézetben megnyitni. Ez a titkosítás ára.

8. Automatikus mentés szkripttel és időzítővel

A gyakorlatban a legtöbben egy napi mentést szeretnének. A következő szkript az eddig tárgyalt biztonsági elemeket egyesíti. Mentsd például a ~/bin/rclone-mentes.sh fájlba:

#!/bin/bash
set -euo pipefail

FORRAS="$HOME/Dokumentumok"
CEL="pcloud:Mentes/Dokumentumok"
ARCHIV="pcloud:Mentes/_archivum/$(date +%F)"
NAPLO="$HOME/rclone-mentes.log"

rclone sync "$FORRAS" "$CEL" \
  --backup-dir "$ARCHIV" \
  --max-delete 50 \
  --exclude '*.tmp' \
  --transfers 4 \
  --log-file "$NAPLO" \
  --log-level INFO

Futtathatóvá kell tenni a chmod +x ~/bin/rclone-mentes.sh paranccsal. Az idézőjelek a szóközt tartalmazó útvonalak miatt fontosak, a set -euo pipefail pedig azt biztosítja, hogy hiba esetén a szkript azonnal leálljon.

Az időzítést a systemd időzítője végzi, amely a cronnál megbízhatóbb, mert pótolja a kihagyott futásokat. Két fájl kell hozzá. A ~/.config/systemd/user/rclone-mentes.service:

[Unit]
Description=Napi mentés pCloudra
After=network-online.target

[Service]
Type=oneshot
ExecStart=%h/bin/rclone-mentes.sh

És a ~/.config/systemd/user/rclone-mentes.timer:

[Unit]
Description=Napi pCloud-mentés időzítője

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

A Persistent=true azt jelenti, hogy ha a gép a kijelölt időpontban ki volt kapcsolva, a következő bekapcsoláskor a mentés lefut. Bekapcsolás és ellenőrzés:

systemctl --user daemon-reload
systemctl --user enable --now rclone-mentes.timer
systemctl --user list-timers

9. Kétirányú szinkron: a bisync

A sync egyirányú. Ha két helyen is módosítasz, például a laptopodon és a pCloud webes felületén, a kétirányú szinkronra az rclone bisync való. Az első futtatásnál meg kell adni a --resync kapcsolót, amely kialakítja a kiinduló állapotot:

rclone bisync ~/Dokumentumok pcloud:Dokumentumok --resync --dry-run
rclone bisync ~/Dokumentumok pcloud:Dokumentumok --resync

Ezután már egyszerűen futtatható:

rclone bisync ~/Dokumentumok pcloud:Dokumentumok

A bisync viszonylag új és bonyolultabb funkció, mert ütközéseket is kezelnie kell, ezért az első kipróbálás legyen szárazon futtatva, és fontos adatoknál tartsd meg a külön mentést is.

10. Gyakori problémák

  • Lejárt vagy érvénytelen token. Ha a program hitelesítési hibát jelez, a rclone config reconnect pcloud: paranccsal újra bejelentkezhetsz.
  • Hibás régió. Európai fiók esetén ellenőrizd az eapi.pcloud.com állomásnevet.
  • Lassú feltöltés sok kis fájlnál. Az API hívásonként dolgozik, ezért sok apró fájl lassabb, mint néhány nagy. Próbáld növelni az --transfers és a --checkers értékét, de mértékkel.
  • Megtelt a kuka. A pCloud törölt fájljai a kukába kerülnek, és ott helyet foglalnak. Az rclone cleanup pcloud: kiüríti a kukát, ezt viszont csak akkor használd, ha biztos vagy benne, hogy semmire nincs már szükséged belőle.
  • Nem indul a csatolás. Ellenőrizd, hogy a csatolási könyvtár létezik és üres, a FUSE telepítve van, és a felhasználó jogosult a /dev/fuse használatára.
  • Hibakeresés. A -vv kapcsoló részletes kimenetet ad, a --log-file pedig fájlba írja azt.

Összegzés

Az rclone és a pCloud együtt rugalmas, ellenőrizhető és szkriptelhető megoldás a felhőtárhely Linux alatti használatára. A copy, sync és move parancsokkal a legtöbb feladat megoldható, a --dry-run, --max-delete és --backup-dir kapcsolók pedig a véletlen adatvesztés ellen védenek. A mount kényelmes, a crypt titkosítást ad, a systemd időzítővel pedig a mentés teljesen automatizálható.

Ajánlott haladási sorrend: először tanuld meg a copy és sync parancsokat szárazon futtatva, utána állítsd be a csatolást, végül építsd fel az automatikus, titkosított mentést.

Lábjegyzetek

¹ rsync – ismert Linux-program fájlok hatékony másolására és szinkronizálására. Csak a megváltozott részeket viszi át, ezért gyors. Az rclone hasonló elven működik, de felhőszolgáltatókkal is képes dolgozni.

² API (Application Programming Interface) – programozási felület, amelyen keresztül egy program a szolgáltatás funkcióit közvetlenül elérheti, böngésző nélkül.

³ FUSE (Filesystem in Userspace) – a Linux-kernel egyik szolgáltatása, amellyel a fájlrendszer felhasználói programként is megvalósítható. Az rclone ennek segítségével jeleníti meg a felhőt könyvtárként.

⁴ Remote – az rclone fogalma egy beállított távoli tárhelyre. A nevet a konfigurációban te adod meg, és a parancsokban a név utáni kettőspont jelzi (például pcloud:).

⁵ Token – hozzáférési kulcs, amelyet a szolgáltató a bejelentkezés után ad. Ezzel az rclone jelszó megadása nélkül, a te nevedben dolgozhat. Aki megszerzi, hozzáférhet a tárhelyedhez.

⁶ Idempotens – olyan művelet, amelyet többször egymás után végrehajtva is ugyanaz az eredmény, mint egyetlen végrehajtás után.

⁷ Ellenőrző összeg (hash) – egy fájl tartalmából számolt rövid érték, például MD5 vagy SHA-1. Ha két fájl összege megegyezik, tartalmuk gyakorlatilag biztosan azonos. A támogatott fajták a pCloud régiójától függhetnek.

⁸ Minta (glob) – helyettesítő karaktereket használó fájlnévszűrés. A * bármilyen karaktersort jelent egy szinten belül, a ** az alkönyvtárakon át is érvényes.

⁹ VFS (Virtual File System) – virtuális fájlrendszer-réteg. Az rclone-ban ez kezeli a gyorsítótárat és a csatolt tárhely fájlműveleteit.

¹⁰ systemd – a legtöbb mai Linux-disztribúció init- és szolgáltatáskezelő rendszere. A --user kapcsolóval a felhasználó saját szolgáltatásai és időzítői kezelhetők, rendszergazdai jog nélkül.

¹¹ Kliensoldali titkosítás – az adatokat még a saját gépeden titkosítod, mielőtt feltöltődnek. A szolgáltató így csak értelmezhetetlen adatot lát.