S3: Übung

Übung 1: RustFS einrichten und ausprobieren

Zugangsdaten konfigurieren

Bearbeite die Datei /home/user/.profile mit einem Texteditor wie beispielsweise nano:

sudo nano /home/user/.profile

Ergänze die Datei ganz unten um foglende Umgebungsvariablen:

export RUSTFS_ACCESS_KEY=user
export RUSTFS_SECRET_KEY=topsecret
Warning

In der Praxis sollte man sicherere Werte verwenden, wie z.B. die Ausgabe von openssl rand -base64 24.

Lies diese konfigurierten Umgegungsvariablen nun ein:

source /home/user/.profile

Überprüfe, ob die Umgebungsvariablen korrekt eingelesen worden sind:

echo $RUSTFS_ACCESS_KEY
echo $RUSTFS_SECRET_KEY

Speichervolumen einrichten

Erstelle ein Verzeichnis innerhalb von deinem $HOME-Verzeichnis (/user/home) namens s3-data:

mkdir /home/user/s3-data

Server starten

Starte nun den Server mit folgendem Befehl:

rustfs server /home/user/s3-data

Verwende für die Weiterarbeit ein zweites Terminal!

Auf Web-Interface einloggen

Besuche nun im Browser folgende URL, wobei du IP-ADRESSE durch die IP-Adresse deiner Cloud-VM ersetzte musst: http://IP-ADRESSE:9001.

Logge dich nun mit deinen Zugangsdaten ein (Account: user, Key: topsecret). Du solltest nun ein Web-Interface sehen.

Bucket erstellen

Erstelle nun einen Bucket namens pictures (siehe Schaltfläche + Create Bucket oben rechts) mit den Standardeinstellungen.

Dateien hochladen

Wähle den neu erstellen Bucket pictures nun aus. Lade einige Bilder hoch (siehe Schaltfläche Upload File/Folder).

Volume betrachten

Erstelle nun eine zweite SSH-Verbindung mit deiner VM.

Zeige den Inhalt deines S3-Volumes mit folgendem Befehl an:

tree s3-data

RustFS speichert die Dateien als Verzeichnisse ab, zu denen Metadaten (xl.meta) abgelegt werden.

Die Daten im S3-Volume können also nicht direkt wie ein Dateisystem behandelt werden.

Übung 2: RustFS-Client verwenden

RustFS stellt einen Kommandozeilen-Client zur Verfügung, mit dem die Daten auf dem RustFS-Server komfortabel verwendet werden können.

Client-Alias erstellen

Der RustFS-Client rc kann so konfiguriert werden, dass er unter einem Alias-Namen mit einem bestimmten RustFS-Server zusammenarbeitet. Führe den folgenden Befehl aus, um einen neuen Alias namens local zu erstellen:

rc alias set local http://localhost:9000 user topsecret

Unter dem Namen local kann man nun auf die lokale RustFS-Instanz zugreifen. Teste den Zugriff mit dem folgenden Befehl:

rc admin info server local

Es sollten nun Zustandsinformationen zum lokalen RustFS-Server angezeigt werden.

Die Konnektivität kann mithilfe des ping-Befehls überprüft werden:

rc ping local

Client-Befehle kennenlernen

Der RustFS-Client rc bietet zahlreiche Befehle, die man von Unix/Linux her kennt. Mit dem folgenden Befehl erhälst du eine Befehlsübersicht:

rc help

Mit den rc-Befehlen kann auf die Daten, die im S3 abgelegt sind, zugegriffen werden. Der Zugriff erfolgt, indem man den Pfad über Alias und Bucket ([Alias]/[Bucket]) angibt:

rc bucket list local
rc object list local/pictures

Mögliche Ausgabe (Beispiel):

[2026-10-18 08:59:46]         0B pictures/
[2026-10-18 09:00:43] 418.23 KiB Bibliothek.jpeg
[2026-10-18 09:00:43] 374.94 KiB Stadttheater.jpeg
[2026-10-18 09:00:43] 604.21 KiB Zirkusplatz-breit.jpeg

Bucket via cc erstellen

Erstelle einen neuen Bucket namens backup mithilfe des rc bucket create-Befehls. (Tipp: Eine Hilfeseite erhält man mit rc bucket create --help.) Kopiere dann wieder drei unterschiedliche Dateien mit dem rc object copy-Befehl vom alten in den neuen Bucket.

Führe nun den Befehl rc object list local/backup aus, um zu kontrollieren, ob die Dateien in den neuen Bucket kopiert worden sind.

Kontrolliere anschliessend im Browser, ob der Bucket erstellt worden ist und alle Dateien enthält.

Buckets taggen

Verwende den rc tag-Befehl (genauer: den Unterbefehl rc tag set), um den Buckets die folgenden Tags zu vergeben:

BucketTag (Key)Tag (Value)
picturespurposeupload
picturesmodule346
backuppurposecopy
backupmodule346

Mit rc tag --help bzw. rc tag set --help erhältst du Hilfestellungen dazu.

Liste nun die Tags mit rc tag list im JSON-Format auf.

Übung 3: s3cmd

Im Gegensatz zu rc ist der Befehl s3cmd nicht nur für die Zusammenarbeit mit RustFS ausgelegt, sondern sollte auch mit anderen S3-Implementierungen und -Angeboten zusammenspielen.

Der Befehl s3cmd sollte bereits installiert sein. Installiere ihn andernfalls mit dem folgenden Befehl:

sudo apt install -y s3cmd

Erstelle die Datei ~/.s3cfg und speichere darin die folgende Konfiguration ab:

host_base = localhost:9000
host_bucket = localhost:9000
use_https = False
access_key = user
secret_key = topsecret
region = bbzw

Die letzte Angabe konfiguriert eine Region für den Storage. Dies funktioniert nur, wenn RustFS die gleiche Region konfiguriert hat. Erweitere hierzu /home/user/profile um eine Umgebungsvariable RUSTFS_REGION mit dem entsprechenden Wert und lies die Umgebungsvariablen erneut ein.

Liste nun die Dateien im pictures-RustFS-Bucket auf:

s3cmd ls s3://pictures

Mit s3cmd musst du anstelle des Alias local/ bloss das Protokoll s3:// als Präfix angeben.

Erstelle mit s3cmd mb nun einen neuen Bucket namens archive:

s3cmd mb s3://archive

Kopiere die drei Dateien aus dem backup-Bucket in den archive-Bucket. Verwende dazu den s3cmd cp-Befehl.

Dokumentiere die Befehle in deiner persönlichen Dokumentation.

Kontrolliere nun im RustFS-GUI im Browser sowie mit den Befehlen rc object list und s3cmd ls, ob alle Dateien erfolgreich kopiert worden sind.

Übung 4: s3fs

FUSE (Filesystem in Userspace) bietet die Möglichkeit, Dateisysteme ohne Administratoren-Berechtigungen als Ordner einzubinden.

Mithilfe von s3fs können S3-Buckets als normale Ordner eingebunden werden.

Der Befehl s3fs sollte bereits installiert sein. Installiere ihn andernfalls mit dem folgenden Befehl:

sudo apt install -y s3fs

Erstelle eine Konfigurationsdatei ~/.passwd-s3fs mit dem folgenden Inhalt:

user:topsecret

Ändere die Berechtigungen für diese Datei folgendermassen:

chmod 600 ~/.passwd-s3fs

Dadurch stellst du sicher, dass nur dein Benutzer diese Datei lesen und schreiben kann (s3fs verweigert sonst den Dienst).

Erstelle nun mit dem mkdir-Befehl ein Verzeichnis ~/s3-mount mit Unterverzeichnissen für die verschiedenen Buckets:

mkdir -p ~/s3-mount/pictures
mkdir -p ~/s3-mount/backup
mkdir -p ~/s3-mount/archive

Mithilfe des s3fs-Befehls können die einzelnen Buckets nun “gemounted”, d.h. eingehängt werden:

s3fs pictures ~/s3-mount/pictures -o use_path_request_style,url=http://localhost:9000
s3fs backup ~/s3-mount/backup -o use_path_request_style,url=http://localhost:9000
s3fs archive ~/s3-mount/archive -o use_path_request_style,url=http://localhost:9000

Die Unterverzeichnisse von ~/s3-mount/ können nun weitgehend wie lokale Ordner verwendet werden.

Kopieren nun eine beliebige Datei (z.B. /usr/share/pixmaps/htop.png), die noch nicht in RustFS vorhanden ist, mit dem cp-Befehl in alle drei Buckets über das ~/s3-mount/-Verzeichnis.

Überprüfe nun im RustFS-GUI im Browser, ob du die Datei in jedem Bucket sehen kannst.

Führe nun den folgenden Befehl aus:

mount | grep s3

Damit wird demonstriert, dass s3fs die S3-Buckets über das Betriebssystem (d.h. über eine Kernel-Funktion) einhängt.

Mit dem umount-Befehl können die Buckets wieder vom Dateisystem gelöst werden:

umount ~/s3-mount/pictures
umount ~/s3-mount/backup
umount ~/s3-mount/archive

Zwar gibt es hierfür auch den s3fs unmount-Befehl, es ist aber bemerkenswert, dass dies auch mit dem gewöhnlichen umount-Befehl funktioniert.

Mit tree kannst du nun überprüfen, dass keine Dateien mehr “da” sind, sondern nur noch die Verzeichnisse:

tree ~/s3-mount

Ausgabe:

s3-mount/
s3-mount/archive
s3-mount/backup
s3-mount/pictures

Die Dateien existieren aber weiterhin in RustFS, was du gerne über den Browser, per rc object list oder per s3cmd ls überprüfen kannst.