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
