====== 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 ===== Zálohování dat z poškozeného disku ===== Při přenosu dat z poškozeného disku je důležité minimalizovat riziko přenosu neúplných souborů a zajistit přehled o průběhu operace. Příkaz níže zajišťuje bezpečné kopírování dat: rsync -av --progress --size-only --partial-dir=/home/user/novydisk/temp/ --timeout=20 stary-disk/2024-* /home/user/novydisk/ ===== Parametry ===== * **`-a`**: Archivní režim, který zachová oprávnění, časové značky a symbolické odkazy. * **`-v`**: Zobrazí podrobné informace o probíhající operaci. * **`--progress`**: Zobrazí průběh kopírování pro každý soubor. * **`--size-only`**: Porovnává pouze velikost souborů, což zrychluje kontrolu, pokud jsou časové značky nespolehlivé. * **`--partial-dir=/home/user/novydisk/temp/`**: Částečně přenesené soubory ukládá do dočasné složky, aby nedošlo k jejich zanechání v cílovém adresáři. * **`--timeout=20`**: Nastaví maximální dobu čekání na odpověď při čtení dat (v sekundách). ==== Co tím dosáhnete ==== - **Bezpečný přenos**: Neúplné soubory nejsou ponechány v cílové složce, ale zůstávají v dočasné složce pro další pokusy. - **Efektivita**: Parametr `--size-only` zajišťuje, že již přenesené a nezměněné soubory nebudou kopírovány znovu - **Přehlednost**: Díky `--progress` máte přehled o stavu přenosu v reálném čase. Dále pak vidím poškozené soubory (ty, které se nepodařilo přenést celé) v jedné složce. Tento příkaz je ideální pro záchranu souborů z poškozeného disku, kde hrozí problémy při čtení dat. Složením všech parametrů je dosaženo bezpečného a efektivního přenosu dat.