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