Hopp til hovedinnhold

Automatisere rsync jobber

Kapittel 12​

La oss pakke vår rsync-kommando i et bash-skript.

Opprett skriptfil​

nano rsyncscript.sh

Eksempel på et rsync bash-skript​

(Viktig! Bruk absolutte stier, da skriptet kan kjøre fra ulike lokasjoner.)

#!/bin/bash
rsync -e 'ssh -i /home/john/.ssh/id_rsa' \
-avhP \
--log-file=/home/john/.rsync.log \
--backup \
--suffix=$(date +%Y-%m-%dT%H-%M-%S) \
--exclude={'Downloads','snap'} \
/home/john \
john@rsyncserver1.com:/mnt/backups/john
&& logger "Rsync backup completed"

Forklaring:​

#!/bin/bash​

#!/bin/bash – starter bash-skriptet.

-e 'ssh -i /home/john/.ssh/id_rsa'​

-e 'ssh -i /home/john/.ssh/id_rsa' – bruker spesifikk SSH-nøkkel.

-avhP​

-avhP – bevarer metadata, viser fremdrift, og gir menneske lesbar størrelse.

--log-file=/home/john/rsync.log​

--log-file=/home/john/rsync.log – lagrer logg til fil.

--backup​

--backup – oppretter en backup av filer som endres eller slettes.

--suffix=$(date +%Y-%m-%dT%H-%M-%S)​

--suffix=$(date +%Y-%m-%dT%H-%M-%S) – legger til tidsstempel på backup.

--exclude={'Downloads','snap'}​

--exclude=snap – ekskluderer mapper fra overføringen.

Kilde​

/home/john – kilde.

Destinasjon​

john@rsyncserver1.com:/mnt/backups/john – destinasjon.

Logging ved fullført jobb​

&& logger "Rsync backup completed" – skriver en melding til systemloggen når jobben er ferdig.

Gjør filen kjørbar​

chmod +x rsyncscript.sh

Kjør skriptet​

./rsyncscript.sh

Sjekk logger​

tail /home/john/rsync.log
tail /var/log/syslog

Automatiser med cron​

Åpne crontab:

crontab -e

Eksempel – kjør jobben daglig kl. 22:00:

0 22 * * * /home/john/rsyncscript.sh

Husk at cron normalt kjører med et begrenset miljø, så bruk absolutte stier både i skript og i cron-linjen. -a (archive) sørger for at eierskap og rettigheter bevares riktig, og er spesielt viktig når skriptet kjøres via cron.

Dersom jobben kan ta lengre tid enn intervallet (for eksempel mer enn 24 timer), kan du vurdere å bruke disse opsjonene:

--stop-after=SEKUNDER  (stopp etter en viss tid)
--stop-at=HH:MM (stopp ved angitt klokkeslett)

Høydepunkter​

Opprett skript

nano /home/john/rsyncscript.sh

Gjør kjørbar

chmod +x /home/john/rsyncscript.sh

Kjør manuelt

/home/john/rsyncscript.sh

Se logger

tail /home/john/.rsync.log
tail /var/log/syslog

Automatiser med cron (daglig kl. 22:00)

crontab -e
0 22 * * * /home/john/rsyncscript.sh
Robert Kristoffersen
Fullstack-utvikler • Webno