Heeft u zich ooit zorgen gemaakt over het verlies van uw gegevens, of bent u het zat om dagelijks of wekelijks handmatige back-ups te maken? Gebruik de rsync
commando en synchroniseer automatisch uw lokale bestanden naar een externe server zo vaak als gewenst zonder handmatige tussenkomst. Let op, deze handleiding vereist wel toegang tot een externe Linux-server (bijv. AWS), en is geschreven onder Ubuntu 20.04, hoewel elke Linux-distro goed zou moeten werken.
Installeer rsync
Controleer voor alles of rsync
is geinstalleerd. Voer op zowel uw lokale pc als webserver dit commando uit:
rsync --versie
Als je de huidige rsync-versie terugkrijgt, ben je helemaal klaar voor de volgende sectie. Anders, als u een opdracht niet gevonden fout, u mag installeren rsync
met dit commando:
sudo apt-get -y install rsync
SSH-sleutel genereren
We zullen een gebruiken SSH-sleutel om de verbinding tussen onze lokale pc en de externe server te verifiëren. Om een nieuwe SSH-sleutel op uw lokale pc in de terminal te genereren, voert u de opdracht uit:
Wilt u op afstand toegang krijgen tot uw Linux-computer of -server? Hier leest u hoe u SSH instelt en configureert op Linux, Windows en mobiel.
ssh-keygen -t rsa -b 4096 -f ~/.ssh/rsync.key
Wanneer u om een wachtwoord wordt gevraagd, laat u dit blanco en drukt u tweemaal op de Enter-toets. Dit genereert twee nieuwe bestanden in uw ~/.ssh/
map met de naam rsync.key
wat de privésleutel is, en rsync.key.pub
, de openbare sleutel.
Externe server instellen
Hoewel dit niet vereist is, maken we voor deze handleiding een nieuwe gebruiker op de externe server voor rsync-verbindingen en om alle back-upbestanden op te slaan. Log in op de externe server via SSH en voer deze opdracht uit:
sudo useradd -m rsync
Het bovenstaande voorbeeld gebruikt de gebruikersnaam rsync, maar u kunt het veranderen in alles wat u maar wilt. De -m
optie vertelt Linux eenvoudig om een thuismap voor onze nieuwe gebruiker te maken.
Om uw lokale pc te laten verifiëren, moet de openbare SSH-sleutel die in de vorige sectie is gegenereerd, worden gekopieerd naar de externe server. Open de /~.ssh/rsync.key.pub
bestand in a tekstverwerker en je zult een grote lijn zien die er ongeveer zo uitziet.
ssh-rsa gebruiker@host
Deze lange regel is de openbare SSH-sleutel. Kopieer het naar uw klembord en voer binnen uw externe server deze opdrachten uit:
sudo su rsync
mkdir -m 0700 $HOME/.ssh
echo "ssh-rsa AAAAB... gebruiker@host" > $HOME/.ssh/authorized_keys
chmod 0644 $HOME/.ssh/authorized_keys
Vervang in de voorlaatste opdracht de tekst tussen de aanhalingstekens door die lange openbare SSH-sleutelregel. Dat is alles, uw lokale pc kan zich nu verifiëren met uw externe server.
Configureer ssh-configuratiebestand
Voeg voor de eenvoud een vermelding toe aan de ~/.ssh/config
bestand op uw lokale pc om eenvoudig verbinding te maken met de externe server. Open het bestand op uw lokale pc met de opdracht.
nano $HOME/.ssh/config
Voeg binnen het bestand een item toe voor de externe server, zoals:
host back-up_server
hostnaam 192.168.0.24
gebruiker rsync
IdentityFile ~/.ssh/rsync
Wijzig de hostnaam in het IP-adres van uw externe server, en als u een andere gebruikersnaam dan "rsync" heeft gebruikt, verander dat ook. Je mag alles gebruiken wat je wilt voor de host, maar voor dit voorbeeld is "backup_server" gebruikt. Sla het bestand op en sluit het door op Ctrl+X te drukken, gevolgd door de toetsen "Y" en Enter.
Test uw SSH-verbinding met de externe server met de opdracht.
ssh backup_server
Ervan uitgaande dat alles correct is ingesteld, zou u nu via SSH op uw externe server moeten zijn ingelogd. Sluit de verbinding met het commando.
Uitgang
Synchroniseer uw bestanden
Test nu de rsync
functionaliteit, en om bijvoorbeeld uw Documenten-map op uw lokale pc te synchroniseren, voert u de opdracht uit:
rsync -avz --progress ~/Documents/ backup_server:~/Documents
Het eerste optreden van ~/Documenten/
specificeert het lokale bestand of de map om te synchroniseren, backup_server
komt overeen met de invoer toegevoegd aan de ~/.ssh/config
bestand, en het einde :~/Documenten
geeft eenvoudig aan dat alles moet worden geüpload naar de directory /Documents van de externe server ten opzichte van de homedirectory.
Log in op de externe server en u zou een nieuwe map Documenten moeten zien die synchroon loopt met die van uw lokale pc. Elke keer dat u de bovenstaande opdracht uitvoert, worden alleen bestanden geüpload die sinds de laatste keer zijn gewijzigd, dus u uploadt niet constant de volledige inhoud van de map.
Automatiseren via Crontab
Nu alles is getest en naar behoren werkt, kunnen we het hele proces eenvoudig automatiseren door een crontab-taak toe te voegen aan onze lokale pc. Om uw lokale map elke 15 minuten automatisch te synchroniseren met de externe server, voert u binnen terminal de opdracht uit.
(crontab -l; echo "*/15 * * * * rsync -avz --progress ~/Documents/ backup_server:~/Documents > /dev/null 2>&1";) | crontab
Mogelijk krijgt u een bericht "geen crontab voor gebruiker" en kunt u dit gewoon negeren. Verander de Documenten
map naar datgene waarvan u een back-up wilt maken, maar zorg ervoor dat u een schuine streep achterlaat voor mappen, anders zullen ze niet correct een back-up maken.
Controleer of de crontab-taak met succes is toegevoegd met de opdracht.
crontab -l
Als je de crontab-taak ziet die zojuist is toegevoegd, dan is alles op zijn plaats. Wacht 15 minuten, controleer uw externe server en alle benodigde bestanden zouden daar moeten zijn. Vanaf nu worden alle wijzigingen die in uw bestanden worden aangebracht, elke 15 minuten automatisch geüpload naar de externe server.
Downloaden van externe server
U kunt ook gebruik maken van rsync
om bestanden te downloaden van de externe server en ze te synchroniseren met uw lokale pc. Gebruik het bovenstaande /Documents-mapvoorbeeld en voer in terminal de opdracht uit:
rsync -chavzP backup_server:~/Documents/ ~/Documents
De ~./Documenten
map op uw lokale pc zou nu een spiegelbeeld moeten zijn van de externe server.
Patronen opnemen en uitsluiten
Als u ooit alleen bestanden wilt synchroniseren die overeenkomen met een bepaald patroon, zoals eindigen met .html
je kunt de gebruiken --erbij betrekken
patroon. Voer binnen terminal het commando uit.
rsync -avz --include "*.html" --progress ~/mijnsite/ backup_server:~/public_html
Controleer de externe server en u zult zien dat alleen bestanden met de extensie .html uit de lokale /mysite/ directory zijn geüpload naar de /public_html/ remote directory. Op dezelfde manier kunt u ook alles synchroniseren, behalve bepaalde bestanden met de --uitsluiten
optie. Met de volgende opdracht worden bijvoorbeeld alle bestanden gesynchroniseerd, behalve die met een .tekst
verlenging.
rsync -avz --exclude "*.txt" --progress ~/mijnsite/ backup_server:~/public_html
Synchroniseer twee lokale mappen
Indien nodig, kunt u ook twee lokale mappen synchroniseren met de opdracht.
rsync -zvr ~/bron/map ~/bestemming/map
Deze opdracht werkt precies hetzelfde als bij het synchroniseren met een externe server, het enige verschil is dat het twee lokale mappen zijn.
Rust zacht
U kunt nu opgelucht ademhalen, wetende dat uw kansen op gegevensverlies nu aanzienlijk lager zijn. In dit artikel heb je geleerd wat: rsync
is, hoe u een SSH-sleutel genereert en installeert, een server definieert binnen de ~./.ssh/config
bestand, synchroniseer een lokale en externe map en automatiseer het hele proces via crontab. In de toekomst worden alle benodigde bestanden altijd met slechts 15 minuten vertraging gesynchroniseerd met uw externe server.
Wilt u uw Linux-harde schijf of -partitie klonen? Gebruik een van deze hulpprogramma's voor het klonen van schijven om uw Linux-schijf te klonen.
- Linux
- Reservekopie van gegevens
- Linux
- Cloud backup
- Thuisnetwerk
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Nog een stap…!
Bevestig uw e-mailadres in de e-mail die we u zojuist hebben gestuurd.