Inleiding
De Raspberry Pi is een mini-computer op creditcard formaat en bedoeld als knutsel- en leerplatform. Hij bevat bijna alle onderdelen van een 'echte' PC, maar dan in het klein. Het printplaatje zelf kost niet meer dan € 40,-. Een paar jaar geleden kreeg ik een model B+ cadeau. Na een aantal eerste experimenten verdween hij in de spreekwoordelijke bureaula.
Toepassing
Tot het moment dat ik zocht naar een mogelijkheid om de bestanden op mijn NAS dagelijks te back-uppen. Het moest toch mogelijk zijn om net een netwerkverbinding en een via USB aangesloten harde schijf kopieën te maken van een netwerkmap?
CIFS-mount
Om de Pi van een netwerkmap te kunnen laten lezen, moet het cifs-utils
-pakket
worden geïnstalleerd. Daarna kan de map in bijvoorbeeld /etc/fstab
worden
gekoppeld tijdens het opstarten. De neest eenvoudige configuratie ziet er
bijvoorbeeld zo uit:
# my Samba-share
//192.168.1.1/share /mnt/share cifs uid=1000,gid=1000,iocharset=utf8,nobrl 0 0
/etc/fstab
Een regel in fstab
bestaat uit de volgende onderdelen (zie ook de documentatie
bij Arch Linux):
- het netwerkpad van de gedeelde map
- de lokale map waar de netwerkmap wordt gekoppeld
- het bestandstype
- eventuele opties
dump
opties (bijna altijd0
)- volgorde waarin
fsck
het bestandssysteem op fouten controleert
In mijn geval was de netwerkmap alleen met gebruikersnaam en wachtwoord
toegankelijk. Het options
-veld biedt de mogelijkheid om deze bij het koppelen
op te geven, maar dit had een veiligheidsnadeel. Normaal gesproken kan namelijk
elke gebruiker /etc/fstab
lezen - dus ook de gebruikersnaam en het wachtwoord.
Gelukkig bestaat er minimaal één elegant en wel zo veilig alternatief.
Veilig verbinden
Door te verwijzen naar een apart bestand met de gebruikersnaam en wachtwoord is het gevaar geweken. Het bestand kan bijvoorbeeld als volgt worden gemaakt:
touch /home/pi/.smbcredentials;
sudo chown root:root /home/pi/.smbcredentials;
sudo chmod 600 /home/pi/.smbcredentials;
De inhoud spreekt voor zich:
username=myuser
password=My$up3rSecReTp@s$w0rD
Tot slot wordt met de optie credentials
in de options
-kolom van fstab
naar
het zojuist gemaakte bestand verwezen. Omdat de netwerkverbinding niet altijd
even snel beschikbaar is tijdens het opstarten van de Pi, heb ik ervoor gekozen
om met behulp van noauto
en systemd
het daadwerkelijke koppelen uit te
stellen totdat de map voor het eerst benaderd wordt.
# my Samba-share
//192.168.1.1/share /mnt/share cifs noauto,x-systemd.automount,x-systemd.device-timeout=3,credentials=/home/pi/.smbcredentials,uid=1000,gid=1000,iocharset=utf8,nobrl 0 0
Nukkige harde schijf
Toen de netwerkmap eindelijk toegankelijk was en betrouwbaar werd gekoppeld,
leek mijn USB harde schijf niet correct te worden herkend. Ze verscheen niet
eens in de systeemlogs (dmesg
en /var/log/syslog
). Ik probeerde haar uit aan
een normale desktop PC, met verschillende USB-adapters... De schijf was in orde.
In een aantal fora op internet beschreven gebruikers soortgelijke problemen en gaven de stroomvoorziening van de schijf de schuld. Onder geen beding mocht de schijf zonder eigen externe voeding worden gebruikt. Tot slot werd ook nog de optie van aansluiten via een USB-hub met externe voeding genoemd.
Al deze variaties leidden tot niets. In elk geval niet tot een betrouwbaar gebruik van een aangesloten harde schijf. Gelukkig ontdekte ik dat de schijf na een reset (warme start) wél werd herkend. Dus voegde ik de volgende regels toe aan het backup-script:
# Force a mount of the external drive
# (it has the noauto option set in /etc/fstab)
mount /mnt/share;
# Check whether the external drive is mounted correctly
if [ "/mnt/share" != "$( df /mnt/share/ | awk 'NR==2{print $6}' )" ]; then
echo "${STARTDT} :: External drive not mounted correctly, exiting." >> "/mnt/share/backup.log";
# Reboot the system and try again
/sbin/shutdown --reboot now &
exit 1;
fi;
De Pi start nu opnieuw op als de externe harde schijf niet correct is gekoppeld. Aangezien het backup-script automatisch start bij het opstarten van de Pi, probeert hij net zo lang totdat het lukt - of de schakelklok de voeding radicaal uitschakelt.
Conclusie
Dit project heeft mij een hoop kennis en ervaring opgeleverd omtrent de Pi, GNU/Linux, Samba en shell-scripts. Ondanks dat de oplossing niet perfect is, vind ik haar goed genoeg. Er wordt dagelijks een backup gemaakt van de bestanden op mijn NAS, en dat is het belangrijkste.