====== Rsync ======
rsync -aHAXxv --numeric-ids -e "ssh -p333 -T -c aes128-gcm@openssh.com -o Compression=no -x" --exclude=lost+found --progress "secretuser@192.168.0.1:/src/data" /home/destination/backup
Vysvětlení parametrů rsync:
-v -verbose
-e "ssh options" - specifikuje ssh připojení jako vzdálený shell
-a archive mode - zachovává oprávnění
-r -rekurze do adresářů
--delete odstraní z cílového adresáře data, která neexistují ve zdrojové cestě
Další parametr k použití je:
--ignore-existing
Pokud bude v cílovém adresáři již existující soubor se stejným názvem, bude ho ignorovat a přeskočí. Pokud chci ale vynutit synchronizaci v případě, že soubor ve zdrojovém adresáři je novější, tak lze použít parametr:
--update
Parametr zařídí, že budou přepsány soubory pouze v případě, že zdrojový soubor je novější než cílový.
zdroje:
* https://gist.github.com/KartikTalwar/4393116
* https://www.hukot.net/community/tutorials/kopirovani-souboru-pomoci-rsync-pres-ssh
* https://www.forpsicloud.cz/navody/seznam-navodu/kveten-2020/jak-nastavit-rsync-zalohovani.aspx
===== Synchronizace 1:1 =====
Tady příklad modelové situace. Data mám na SD kartě Raspberry Pi. Chci, aby se každý den synchronizovala data na pevný disk, který mám také připojený k Raspberry Pi. Také chci, aby se v cílovém adresáři smazaly soubory, které jsem odstranil v zdrojovém adresáři. Jendoduše - synchronizace 1:1.
To mi zajistí tento skript:
#!/bin/bash
SRC='/mnt/source-data/'
DST='/mnt/destination-data/'
RSYNC=$(command -v rsync)
if [ ! -e $SRC ]; then
echo "Error: Source path does not exists."
exit 1
fi
if [ ! -e $DST ]; then
echo "Error: Destination path does not exists."
exit 1
fi
$RSYNC -aHAXx --numeric-ids --progress --delete $SRC $DST