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.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.
De eerste stap is een ssh verbinding opzetten tussen de webserver (VPS) en de NAS. Er zijn twee mogelijkheden:
Ik heb gekozen voor de tweede mogelijkheid. Deze heeft het voordeel dat je geen instellingen in je router hoeft te maken. Deze mogelijkheid brengt dus ook minder beveiliging risico's met zich mee.
Maak een nieuwe gebruiker via de web interface DSM van je diskstaton. Maak deze gebruiker lid van de groep administrators en users en geef bij machtigingen lees en schrijf rechten voor de homes folder. Open vanaf een lokale computer 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". Hiermee zorg je ervoor dat de nieuwe gebruiker kan inloggen via ssh. 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. Als alles goed ingesteld is is inloggen via ssh voor de nieuwe gebruiker niet meer nodig dus zo erg is dit niet, maar je moet er wel even rekening mee houden.
Maak ook een nieuwe gebruiker aan op de webserver. Maak deze lid van de groep apache en wheel. In het voorbeeld noem ik deze user "backup". Zorg ervoor dat bij het aanmaken van deze gebruiker ook een home directory voor deze gebruiker wordt aangemaakt. Maak het mogelijk om met een ssh in te loggen op je diskstation door de configuratie van de sshd_config aan te passen:
sudo vi /etc/ssh/sshd_config
Voeg de volgende regels toe om ssh inlog mogelijk te maken:
AllowUsers backup Match User backup PasswordAuthentication yes KbdInteractiveAuthentication yes
Kijk eerst of je kan inloggen vanaf de diskstation op de webserver. Log in met ssh op de diskstation met de nieuwe gebruiker:
ssh new_user@diskstation.local
Vervolgens probeer je vanaf daar in te loggen op de webserver:
ssh backup@webserver.nl
Lukt dit maak dan een ssh key aan op de diskstation 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:
cat ~/.ssh/id_rsa.pub | ssh backup@webserver.nl "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Maak het mogelijk om met een ssh key in te loggen op je webserver 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.
Log uit en probeer opnieuw in te loggen op de webserver met:
ssh backup@webserver.nl
Als het goed is wordt nu niet meer om een wachtwoord gevraagd. Dit is nodig om een automatische taak vanaf de diskstation uit te voeren. Je kunt nu op de webserver de sshd_config weer aanpassen. De regels:
Match User backup PasswordAuthentication yes KbdInteractiveAuthentication yes
zijn niet meer nodig.
Om te testen is het handig om op de webserver in de home folder van de backup user een folder "data" aan te maken en hier enkele bestanden in te plaatsen.
Controleer eerst of bij bestand services de R-sync service is ingeschakeld.
Ga naar de home folder van de nieuwe gebruiker via de DSM interface. Maak een folder aan waarin de gesynchroniseerde data komt en maak een script backup.sh aan met de volgende code:
#!/bin/bash USER="backup" SERVER="ip-addres of server naam" SOURCE="/data/" TARGET="/volume1/homes/new_user/backup/data/" LOG="/volume1/homes/new_user/backup/data/backup.log" rsync --delete -avz --stats -zav $USER@$SERVER:$SOURCE $TARGET >> $LOG 2>&1
Test het script eerst door in te loggen met de nieuwe user via ssh. Je komt dan in de home folder en run het script:
./backup.sh
Als het goed is worden nu de bestanden die in de data folder van de webserver staan geplaatst in backup folder. Je kunt nu de webfolder aanpassen aan de folder die je werkelijk wilt back-uppen, bijv. /var/www/html. Als het niet lukt controleer dan de rechten van gebruikers en folders.
Ga in de DSM interface naar de Taak planner. Maak een nieuwe taak aan:
Vul de tabbladen in. Bij algemeen de "new_user". Bij planning de frequentie om het script uit te voeren en bij Taakinstellingen verwijs je naar het script.
Ga naar de web interface van DSM en ga naar "Hyper backup". Klik op + in de linker beneden hoek.
Kies Locale map & USB.
Of als er al een backup taak is ingesteld ga je naar bewerken:
Je krijgt dan een mappenlijst waarin je de folders kunt selecteren waarvan je een backup wilt maken.
Een uitgebreide handleiding voor het maken van back-up taken vind je op de site van www.synology.com.