We plaatsen een cookie voor Google Analytics om onze website te verbeteren

Met een cookie kun je advertenties personaliseren. Wij hanteren echter de strikte regels van de Autoriteit Persoonsgegevens. Surfgedrag houden we niet bij en we achtervolgen je ook niet met reclame.

Snel je website verhuizen met SSH en rsync!

Ben je net die grote website aan het verhuizen, knalt je FTP-verbinding er ineens uit. Je zag er al tegenop en nu krijg je dit er ook nog bij… Zijn alle bestanden wel overgezet of moet alles nu opnieuw? Misschien herken je het wel. Een website verhuizen gaat lang niet altijd vlekkeloos. Dat hoeft echter niet zo te zijn. Met behulp van SSH (Secure Shell) en rsync kun je namelijk snel en moeiteloos grote websites overzetten!

Snel je website verhuizen met SSH en rsync!

Voor websites verhuizen wordt nog vaak FTP (File Transfer Protocol) gebruikt. Dit is een oud protocol voor bestandsoverdracht die zeker bij grote websites met veel bestanden erg langzaam wordt. Gelukkig is er een betrouwbaarder en sneller alternatief! Je website verplaatsen kan namelijk ook met SSH en rsync. Graag leg ik je uit hoe het werkt.

Wat is rsync?

Met rsync kun je zowel bestanden als mappen tussen servers synchroniseren. Voor de overdracht kan rsync met de optie -z ook bestanden comprimeren, wat het sneller maakt. Je kunt het proces tussentijds tevens onderbreken, zonder dat je de voortgang kwijt raakt. Rsync gaat dan gewoon verder waar je gebleven was. Deze verhuismethode schaalt zo prima op naar grote websites.

#1. Met SSH verbinden

Om te beginnen, heb je een private key nodig op de plek waar de website nu staat. Van daaruit dien je een public key genereren die je bij ons kunt instellen. Staat alles klaar, dan kun je met de webhostingserver verbinden.

ssh s123.webhostingserver.nl -l deb12345
[deb12345@s123 ~]$ whoami
deb12345

Hier vervang je s123.webhostingserver.nl met de hostnaam van de server waar je naartoe wilt verbinden. Gebruik in plaats van deb12345 je eigen inlognaam.

Meer over SSH
We gaan er hier vanuit dat je met SSH bekend bent. Raadpleeg onze handleiding als je graag meer over met SSH verbinden wilt weten.

Is je website gemaakt met WordPress of Joomla, dan gebruik je een database. Je moet dan ook even op het hostingpakket bij ons een nieuwe, lege database aanmaken. Noteer de gegevens van deze database, zodat je die later makkelijk kunt terugvinden.

#2. Met rsync bestanden overzetten

Nu de voorbereidingen zijn getroffen, zijn we er klaar voor om de website over te zetten. We beginnen met de bestanden. Doorgaans downloadt je die met FTP eerst van de server naar je PC. Vanaf je PC uploadt je het dan weer naar de andere server. Niet met rsync! Daar wissel je rechtstreeks bestanden uit tussen twee servers. Dat scheelt je dus het downloaden en weer uploaden.

Met rsync bestanden overzetten, doen we door het volgende commando te draaien op de server waar je website nu is ondergebracht. Simpel gezegd staat er dat je de bestanden van de huidige locatie (site_root/) naar de nieuwe locatie (het hostingpakket bij ons) wilt verplaatsen.

rsync -avz site_root/ deb12345@s123.webhostingserver.nl:/home/deb12345/domains/voorbeeld.nl/public_html/

De site_root vervang je door de map waar je website staat. Vergeet niet om hier altijd een / achter te zetten, anders wordt de map zelf overgezet in plaats van de inhoud ervan. De gegevens erna vervang je met die van het pakket bij ons. Denk aan het deb-nummer, het serveradres en de domeinnaam.

#3. De database overzetten

De bestanden zijn nu over, lekker bezig! We gaan op dezelfde voet verder en de database verhuizen. Dat gaat in drie stappen: een kopie maken, de kopie overzetten en het importeren in de nieuwe, lege database. Op de server een kopie van de database maken, gaat met behulp van het volgende commando.

mysqldump -u deb12345 -p deb12345_voorbeeld > voorbeeld.sql

Bij dit commando moet je een aantal waarden aanpassen naar de gegevens van je eigen database.

  • Vervang deb12345 met de username van je database.
  • Vervang deb12345_voorbeeld met de naam van je database.
  • Hier is voorbeeld.sql de naam van de kopie en die mag je zelf bepalen 😉

Als je hierna op enter drukt, dan wordt je gevraagd om het wachtwoord van de database in te voeren. Dit wachtwoord is vereist om de kopie te maken. Zorg dus dat je deze voorhanden hebt. Deze gegevens, waaronder het wachtwoord, kun je in de databaseconfiguratie van je website vinden. Bij WordPress staat dit in het bestand wp-config.php.

Met rsync de databasekopie overzetten

Heb je kopie gemaakt, dan kun je deze met behulp van rsync overzetten. Het commando is bijna hetzelfde als de vorige. Het belangrijke verschil is dat de kopie van de database niet in de sitemap terecht komt. Anders kan dit worden gedownload en dat willen we natuurlijk niet.

rsync -avz voorbeeld.sql deb12345@s123.webhostingserver.nl:/home/deb12345/domains/voorbeeld.nl/

De gekopieerde database importeren

Tijdens het voorbereiden heb je ook een nieuwe, lege database aangemaakt. De gegevens daarvan heb je nu nodig voor het volgende commando. Daarmee plaats je namelijk de gemaakte kopie in de nu nog lege database.

mysql -u deb12345_user -p deb12345_db < /home/deb12345/domains/voorbeeld.nl/voorbeeld.sql

Ook bij dit commando moet je een aantal waarden aanpassen die op jouw situatie van toepassing zijn.

  • Vervang deb12345_gebruiker door de gebruikersnaam van de database die je hebt aangemaakt.
  • Gebruik in plaats van deb12345_voorbeeld de eerder door jou gekozen databasenaam.
  • Vervang voorbeeld.nl/voorbeeld.sql met het absolute pad naar je databasekopie.

#4. Het configuratiebestand aanpassen

Om te kijken of je website nu werkt, kun je Alvast Online gebruiken of de hosts file aanpassen. Bij het testen zie ik in dit geval de onderstaande database error. Het werkt dus nog niet helemaal… Deze melding zegt doorgaans dat er niet de correcte gegevens worden gebruikt om met de database te verbinden. Denk aan een onjuiste gebruikersnaam of wachtwoord in het configuratiebestand.

Je website verhuizen met SSH en rsync: een database error in WordPress oplossen.

De volgende stap is dus om de configuratie te controleren. In ons voorbeeld gebruiken we WordPress. Met het volgende commando kunnen we dan het configuratiebestand wp-config.php openen. Vervang hierbij het deb-nummer en het domein met je eigen waarden.

nano /home/deb12345/domains/voorbeeld.nl/public_html/wp-config.php

Zo te zien staan in de configuratie nog de oude, nu onjuiste gegevens van de vorige hostingpartij. Pas dit aan naar de nieuwe databasegegevens, ofwel die van de aangemaakte database bij ons. Ben je klaar, dan kun gelijktijdig je ctrl + o intoetsen en het met enter bevestigen om het bestand uit te schrijven.

Je website verhuizen met SSH en rsync: de wp-config.php aanpasesn met nano.

Je kunt er trouwens ook voor kiezen het wp-config.php-bestand aan te passen via de File Manager in DirectAdmin of met behulp van een FTP-programma.

Zo, klaar!

Als alles goed is gegaan, dan is jouw website nu volledig overgezet. Heb je ook e-mailaccounts die op je domeinnaam zijn gebaseerd en wil je die berichten meenemen? Check dan hoe met imapsync e-mail verhuizen werkt. Liever de boel laten overzetten? Dat kan met onze handige verhuisservice!

Verhuisservice aanvragen →

P.S. Blijf op de hoogte en volg ons via Facebook, X, Instagram, e-mail en RSS. Heb je vragen, tips of opmerkingen? Laat het achter als reactie. Vond je het artikel nuttig? Deel het dan met anderen!

Deel dit blog
Joël van der Voort van der Kleij
Joël van der Voort van der Kleij

Joël is als Linux System Engineer bij Antagonist werkzaam. Hij bedenkt graag elegante oplossingen voor complexe problemen, zodat de techniek toegankelijk is voor iedereen!

Artikelen: 2

2 reacties

  1. Dank voor je uitvoerige uitleg Joël! Wanneer ik met rsync echter van de ene server naar de andere server bestanden wil overzetten krijg ik volgende foutmelding: “The source and destination cannot both be remote.
    rsync error: syntax or usage error (code 1) at /AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-54.120.1/rsync/main.c(1087) [receiver=2.6.9]”
    Dit lijkt erop dat met rsync juist niet van de ene server direct naar een andere server gekopieerd kan worden?

    • Bedankt voor de reactie, Peter! Het klopt inderdaad dat rsync niet aan beide kanten een remote server kan hebben. Eén van deze plekken moet dus lokaal zijn. Wanneer je tot één van de servers SSH-toegang hebt, dan kun je wel rechtstreeks vanaf die server rsync gebruiken. Je eigen PC hoeft dan niet als tussenstation te functioneren.

      Succes met de uitvoering! Stuur gerust een e-mail naar support@antagonist.nl wanneer je er niet uitkomt.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Sterren Webhosting: 5 sterren uit 5.830 reviews

60.000+ webhostingpakketten actief
Bij de beste webhosters in MT1000 en Emerce 100