Chmura jako katalog w Raspberry PI

Większość z Nas posiada konto z przestrzenią dyskową w chmurze. Jest to często GoogleDrive, Onedrive lub podobne. Myślę, że warto wykorzystać taką przestrzeń udostępniając ją dla Naszego Raspberry PI aby „zwiększyć” dostępną powierzchnię karty SD lub małego dysku SSD.

Przedstawię tutaj sposób „zamontowania” zdalnego katalogu z GoogleDrive jako katalogu na Raspberry PI. Dzięki temu będziemy mogli kopiować do niego lub z niego pliki, kopiować pliki kopii zapasowych (na przykład bazy domoticz) czy współdzielić pliki z innymi systemami.

Wykorzystam do tego uniwersalne narzędzie o nazwie rclone.

Przystępujemy więc do instalacji:

W celu zachowania higieny wykonujemy standardowo polecenie

sudo apt update
sudo apt upgrade

następnie polecenie, które zainstaluje program rclone

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

po poprawnej instalacji musimy zalogować się do środowiska graficznego Raspberry Pi gdyż podczas konfiguracji zostanie uruchomiona przeglądarka internetowa, w której potwierdzimy dostęp do Naszego konta Google. Zatem w trybie graficznym uruchamiamy terminal i wydajemy komendę

rclone config

w trybie tekstowym uruchomi się konfigurator, w którym kolejno wybieramy  opcje kreatora (aby nie pisać krok po kroku załączam listing z konsoli, w którym dodałem komentarze aby było wiadomo co wybierać):

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 # wybieramy "n" aby utworzyć nowy.

#------------------------
name> gdrive # podajemy nazwę dla zdalnego zasobu

#------------------------
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / A stackable unification remote, which can appear to merge the contents of several remotes
   \ "union"
 2 / Alias for a existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio)
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Dropbox
   \ "dropbox"
 9 / Encrypt/Decrypt a remote
   \ "crypt"
10 / FTP Connection
   \ "ftp"
11 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
12 / Google Drive
   \ "drive"
13 / Hubic
   \ "hubic"
14 / JottaCloud
   \ "jottacloud"
15 / Local Disk
   \ "local"
16 / Mega
   \ "mega"
17 / Microsoft Azure Blob Storage
   \ "azureblob"
18 / Microsoft OneDrive
   \ "onedrive"
19 / OpenDrive
   \ "opendrive"
20 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
21 / Pcloud
   \ "pcloud"
22 / QingCloud Object Storage
   \ "qingstor"
23 / SSH/SFTP Connection
   \ "sftp"
24 / Webdav
   \ "webdav"
25 / Yandex Disk
   \ "yandex"
26 / http Connection
   \ "http"
Storage> 12 # spośród wielu opcji wybieramy 12 dla google drive

#------------------------
** See help for drive backend at: https://rclone.org/drive/ **

Google Application Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id> # akceptujemy wartość domyślną wciskając ENTER

#------------------------
Google Application Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> # akceptujemy wartość domyślną wciskając ENTER

#------------------------
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 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 # wybieramy 1 aby mieć uprawnienia do odczytu i zapisu

#------------------------
ID of the root folder
Leave blank normally.
Fill in to access "Computers" folders. (see docs).
Enter a string value. Press Enter for the default ("").
root_folder_id> # akceptujemy wartość domyślną wciskając ENTER

#------------------------
Service Account Credentials JSON file path 
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Enter a string value. Press Enter for the default ("").
service_account_file> # akceptujemy wartość domyślną wciskając ENTER

#------------------------
Edit advanced config? (y/n)
y) Yes
n) No
y/n> 
y/n> n # wybieramy n bo nie chcemy konfigurować zaawansowanych opcji

#------------------------
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> y # potwierdzamy, autokonfigurację i czekamy na otwarcie przeglądarki w której wprowadzamy poświadczenia dla konta google.

#------------------------
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a team drive?
y) Yes
n) No
y/n> n # odpowiadamy n

#------------------------
--------------------
[gdrive]
type = drive
scope = drive
token = {"access_token":"...wycięte dane prywatne..."}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y # potwierdzamy, że wszystko OK

#------------------------
Current remotes:

Name                 Type
====                 ====
gdrive               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 # wychodzimy lub konfigurujemy nowy zasób
pi@domoticz:~ $

teraz testujemy czy działa poleceniem:

rclone lsd gdrive:/

polecenie powinno wylistować nam zawartość katalogu głównego naszej chmury.

Właściwie na tym moglibyśmy zakończyć bo wpisując polecenie

rclone --help

otrzymamy pomoc do programu rclone i dzięki temu będziemy wiedzieć jak się nim posługiwać.

Jednak na początku napisałem, że podłączymy GoogleDrive pod jeden z katalogów w Naszym Raspberry PI, opisuję więc dalej jak to zrobić.

Tworzymy katalog /home/pi/gdrive i wykonujemy następujące polecenie

rclone mount gdrive:/ /home/pi/gdrive/ --daemon

i mamy zamontowany cały GoogleDrive pod katalogiem /home/pi/gdrive

A co jeśli chcemy aby GoogleDrive automatycznie montował się do wybranego przez Nas katalogu podczas startu systemu?

Wykorzystamy do tego fstab:

Pobieramy potrzebny nam plik z GitHuba DomoticzPolska i nadajemy odpowiednie uprawnienia kolejno poleceniami:

sudo wget -O /usr/local/bin/rclonefs https://raw.githubusercontent.com/DomoticzPolska/Scripts/master/bash/rclonefs
cd /usr/local/bin
sudo chown pi:pi rclonefs
sudo chmod +x rclonefs

dodajemy poniższą linijkę w pliku /etc/fstab (na końcu) i zapisujemy go.

rclonefs#gdrive:/ /home/pi/gdrive fuse config=/home/pi/.config/rclone/rclone.conf,allow-other,default-permissions,max-read-ahead=16M,vfs-cache-mode=writes,cache-dir=/home/pi/.cache/rclone,users 0 0

Otwieramy plik /etc/fuse.conf i zdejmujemy komentarz z linii user_allow_other i zapisujemy.

Restartujemy Raspberry PI i jeśli wszystko poszło dobrze w katalogu /home/pi/gdrive mamy zawartość Naszej chmury.

Przykład opisałem dla GoogleDrive jednak jak zauważyłeś, rclone daje nam więcej opcji, z których możesz skorzystać analogicznie.

Zamiast katalogu /home/pi/gdrive można użyć innego pustego katalogu. Ja u siebie zgodnie ze sztuką używam /mnt/gdrive 😉

4 odpowiedzi do “Chmura jako katalog w Raspberry PI”

  1. Cześć, próbuję dodać chmurę Google twoim sposobem, ale przy dodaniu automatycznego włączania podczas wpisywania
    sudo chown pi:pi rclonefs
    dostaję błąd
    chown: nie ma dostępu do ‚rclonefs’: Nie ma takiego pliku ani katalogu
    Czy mógłbyś podpowiedzieć co robię źle?

    1. Przepraszam, że tak późno odpisuję ale nie zaglądałem tu dawno. Poprawiłem w artykule, prawdopodobnie to przez to, że nie jesteśmy w katalogu /usr/local/bin

  2. Zastosowałem się do wszystkich twoich instrukcji i klops. Raspberry w gule się nie uruchamia, po podłączeniu monitora i podejrzeniu co tam się dzieje, wyskakuje komunikat naciśnij enter w celu uruchomienia ostatniej poprawnej konfiguracji. I tak się dzieje, ale po zabiegach z dodanie gdrive nie ma śladu.

    1. To wygląda na błąd syntaktyczny w pliku fstab. Najczęściej błąd w tym pliku to brak na końcu pliku przejścia do nowej linii – to jest wymaganie POSIX.

Skomentuj Takaszi Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *