Backup maken van een folder op VPS webserver op Synology NAS

Als je een site op een VPS webserver hebt kun je van een folder op deze webserver een backup maken op een Synology NAS diskstation.  Door een Cronjob aan te maken op je webserver kun je via SSH een folder synchroniseren met een folder op je NAS. In de DSM web interface kun je dan incremental backup maken van deze folder.

Als je op je webserver een folder hebt waar gebruikers regelmatig bestanden kunnen plaatsen of verwijderen is het handig als je van deze folder een incremental backup kunt maken. Als er iets fout gaat en een gebruiker is bestanden kwijt of heeft een bestand overschreven kun je in het verleden geplaatste bestanden weer terug zetten. Hier volgt een uitleg om een folder op je webserver te synchroniseren met een folder op je Synology NAS diskstation, Via de web interface van DSM kun je dan met Hyper Backup een incremantal-backup van deze folder maken.

De eerste stap is een ssh verbinding opzetten tussen de webserver (VPS) en de NAS. Er zijn twee mogelijkheden:

  • Via ssh vanaf de webserver je NAS benaderen.
  • Via ssh vanaf de NAS schijf je webserver benaderen.

Ik heb gekozen voor de eerste benadering. Een uitleg van de andere strategie vind je hier. Bij beide benadering moet je een SSH key aanmaken om automatisch te kunnen verbinden.

Stap 1: Een gebruiker aanmaken die de diskstation kan benader met ssh

Het is veiliger om niet met je root of admin account in te loggen op je diskstation maar een aparte gebruiker te maken voor deze taak. SSH login is standaard niet toegestaan voor normale gebruikers (gebruikers die niet lid zijn van de groep administrators). Om dit aan te passen moet je de configuratie van de user in de wachtwoord file aanpassen. Maak een nieuwe gebruiker via de webinterface DSM van je diskstaton. Open de terminal en log in op de diskstation met je admin account:

ssh admin@diskstation.local

sudo vi /etc/passwd

en verander voor deze gebruiker "/sbin/nologin" in "/bin/sh". Het vervelende is dat dit elke keer weer teruggezet wordt als de diskstation opnieuw opstart of als je aanpassingen maakt in de user configuratie. De waarde voor deze gebruiker moet dus elke keer na een herstart of user aanpassingen weer aangepast worden.

Je kunt dit voorkomen door een script uit te voeren tijdens het opstarten van de NAS. Ga naar de Taakplanner in de DSM interface.

Maak een tekst file aan in de home folder met het volgende content:

#!/bin/bash # Change the Login Shell for User "serverbackup" to /bin/sh /usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"}/^user:/{gsub(/.*/,"/bin/sh",$7)}1' /etc/passwd

Verander user in de naam die je boven gekozen hebt.

Stap 2: Zorgen dat je de NAS vanaf een externe locatie kunt benaderen met ssh.

Ga op je diskstation naar de configuratie van "Externe toegang". Kies bij DDNS op toevoegen. Kies bij service providervoor "Synology". Je kunt nu gratis een domein naam koppelen aan je diskstation, zie de uitleg op synology.com. Je moet er nu nog voor zorgen dat je router SSH verbindingen toestaat. Hoe je dit moet instellen hangt van je internet provider af. Je kunt meestal instellen dat als je verbinding maakt van buitenaf via SSH de verbinding doorgestuurd wordt naar je diskstation. Test of dit werkt met:

ssh syn_user@diskstation_name.synology.me

Stap 3: Het aanmaken van de SSH key.

Maak verbinding via SSH met je diskstation:

ssh admin@diskstation.local

Maak het mogelijk om met een ssh key in te loggen op je diskstation door de configuratie van de sshd_config aan te passen

sudo vi /etc/ssh/sshd_config

Verander de regels:

#RSAAuthentication yes #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys

naar:

#RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys

Meer informatie op de website van chainsawonatireswing.

Maak eerst een nieuwe gebruiker aan op de webserver. Ga naar de home directory van deze gebruiker. Maak een ssh key aan op je webserver met ssh-keygen. Accepteer de default locatie. Bij enter password phrase niks invullen. Er wordt nu een public en private key aangemaakt. Kopieer de public key naar je diskstation met:

ssh-copy-id user_name@diskstation_name.synology.me

Stap 4: Synchroniseer een folder op je webserver met een folder op je diskstation.

Ga naar de home folder van de nieuwe gebruiker op je webserver. Maak een script aan om een folder op je websterver te synchroniseren met een folder op je diskstation:

vi backup.sh

plaats de volgende regel in dit script:

rsync --delete --stats -zav /var/www/html/folder user_name@diskstation_name.synology.me:backup/folder

Daarna moet je ervoor zorgen dat dit script bijv. 1x per dag uitgevoerd wordt. Dit doe je door er een cronjob van te maken:

crontab -e 00 00 * * * /home/user_name/backup.sh

Stap 5. Maak een incremental backup van de folder op je diskstation.

Ga naar de web interface van DSM en ga naar "Hyper backup". Klik op + in de linker beneden hoek.

Kies Locale map & USB.

Een uitgebreide handleiding voor het maken van back-up taken vind je op de site van www.synology.com.