Spring naar hoofdtekst

Backup met Raspberry Pi en USB-HDD

Geplaatst op door ,
Laatste aanpassing op .

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):

  1. het netwerkpad van de gedeelde map
  2. de lokale map waar de netwerkmap wordt gekoppeld
  3. het bestandstype
  4. eventuele opties
  5. dump opties (bijna altijd 0)
  6. 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.

Inhoudsopgave

Atom-feed Atom-feed van FWiePs weblog

Artikelen


Doorzoek de onderstaande categorieën om de lijst met artikelen te filteren.