Stand Bookworm oder Ende 2024
Hier nur die reine NFS-Freigabe. Für einen LXC sei erwähnt, dass der Container Privilegiert gestartet wird und dass das Nesting und NFS aktiv sind! Das gilt für Host und Client.
Host:
IP: 192.168.1.65
Freigabeverzeichnis: /srv/nfsdata1
Client:
IP: 192.168.1.80
Mountverzeichnis: /mnt/remotemount1
Host – Freigabe bereitstellen:
Root-Rechte werden benötigt.
mkdir -p /srv/nfsdata1
chmod -R 777 /srv/nfsdata1
Achtung! In meinem Home-System kann ich das so verwenden. Das heißt aber auch am Host selbst, dass dieses Verzeichnis für alle Benutzer sichtbar ist! Da mein Host aber nur für mich selbst zugänglich ist, stört mich das nicht. Die NFS-Freigabe über das NFS-Protokoll ist dann allerdings nur für die zugelassenen IP-Adressen verfügbar.
apt update && apt upgrade -y
apt install nano nfs-kernel-server nfs-common -y
nano /etc/exports
Folgendes trage ich am Ende dieser Datei ein (einige Beispiele zur Demonstration – ich verwende „# Mein persönlicher Eintrag:“ für meine Umgebung):
# (R) = Read only | (R/W) = Read/Write
# Bsp.1: Freigabe gilt nur für 192.168.1.100, (R):
/data 192.168.1.100(ro,async)
# Bsp.2: Freigabe gilt für alle IPs von 192.168.1.6 bis 192.168.1.255, (R/W):
/data 192.168.1.6/255.255.255.0(rw,async)
# Bsp.3: Freigabe gilt nur für 192.168.1.39, (R/W):
/data 192.168.1.39(rw,async)
# Mein persönlicher Eintrag:
/srv/nfsdata1 192.168.1.80(rw,async,no_subtree_check,crossmnt)
Strg-x, y, Enter
exportfs -ra
service nfs-kernel-server restart
showmount -e 192.168.1.65
root@test:~# showmount -e 192.168.1.65
Export list for 192.168.1.65:
/srv/nfsdata1 192.168.1.80
root@test:~#
Hier bin ich fertig.
Quelle:
https://wiki.ubuntuusers.de/NFS/
Die Freigabe wurde erstellt und steht nun im Beispiel für 192.168.1.80 zur Verfügung.
Client – Freigabe hinzufügen:
apt update && apt upgrade -y
apt install nano nfs-common -y
mkdir -p /mnt/remotemount1
mount 192.168.1.65:/srv/nfsdata1 /mnt/remotemount1
Erscheint nun keine Fehlermeldung, wurde die Verbindung hergestellt. Zum Test erstelle ich eine Datei in diesem Verzeichnis. Somit kann ich auch gleich die Schreibrechte prüfen:
touch /mnt/remotemount1/testdatei.txt
Wurde die Datei angelegt, sollte diese auch am Host unter /srv/nfsdata1 vorhanden sein.
Nun trenne ich die Verbindung wieder:
umount -l /mnt/remotemount1
Nun könnte ich die Verbindung in der Fstab eintragen (somit hätte ich die Verbindung automatisch nach einem Reboot wiederhergestellt und könnte die Freigabe auch für meine tägliche Arbeit verwenden):
nano /etc/fstab
Am Ende dieser Datei füge ich folgendes ein:
192.168.1.65:/srv/nfsdata1 /mnt/remotemount1 nfs rw 0 0
Strg-x, y, Enter
mount -a
Die meisten Anwender sind hier fertig und können die NFS-Freigabe verwenden.
Für meine Zwecke benötige ich allerdings ein anderes Szenario. Ich verwende meist die NSF-Freigabe für Backups. Und die werden meist einmal Täglich gestartet. Dafür muss aber die NFS-Verbindung nicht dauerhaft aktiv sein. Also lasse ich den Fstab-Eintrag weg und erstelle mir ein Script, in welchem das Verzeichnis gemountet wird, mein Backup gesetzt wird und das Verzeichnis wieder „entmountet“ wird:
cd && mkdir -p /opt/scriptfiles
cd && cd /opt/scriptfiles && nano script1.sh
Folgendes trage ich ein:
#!/bin/bash
# Verzeichnis mounten
mount 192.168.1.65:/srv/nfsdata1 /mnt/remotemount1 nfs rw 0 0
# Nun mein Befehl, den ich ausführen möchte (z.B. rsync von Host zum Client)
rsync -aAx /mnt/remotemount1/ /opt/mein_angelegter_backupordner
# Verzeichnis wieder trennen
umount -l /mnt/remotemount1
Strg-x, y, Enter
cd && cd /opt/scriptfiles && chmod 700 script1.sh
Zum Aufruf des Scriptes folgenden Befehl eingeben:
cd && cd /opt/scriptfiles && ./script1.sh
Nun automatisiere ich das Ganze:
crontab -e
Folgendes am Ende der Datei einfügen:
0 5 * * * /opt/scriptfiles/script1.sh >/dev/null 2>&1<br>
#
STGR-x, y, Enter
Jetzt wird täglich 05:00 Uhr das „script1.sh“ gestartet.