Synchronizacja przez SSH

Parametr Opis

-e ssh

połączenie przez SSH np. -e "ssh -l ssh-user -p 22"

-a

zastępuje kilka parametrów -r -l -p -t -g -o -D

-v

wyświetla bieżącą operację

-z

włącza kompresję

--delete-before

kasuje pliki w docelowej lokalizacji jeśli te nie istnieją w źródłowej lokalizacji

-n, --dry-run

testowa synchronizacja

-r

synchronizuje podkatalogi

-l

kopiuje linki symboliczne jako linki symboliczne

-p

zachowuje uprawnienia

-t

zachowuje uprawnienia dla grupy

-o

zachowuje uprawnienia dla użytkownika

-D

zachowuje pliki urządzeń (tylko root)

cd ~/Nextcloud
rsync -avz --delete-before -e ssh Instrukcje/ użytkownik@hostname:/opt/backup-rsync/Instrukcje
cd ~/Książki
rsync -avz --delete-before -e ssh . użytkownik@hostname:/opt/backup-rsync/Books

Oprócz oczywistej różnicy pomiędzy tymi dwoma poleceniami, jest jeszcze taka mniej oczywista, mianowicie znak / na końcu źródłowego katalogu: Instrukcje/, można uznać, że taki zapis oznacza użycie polecenia cd Instrukcje a następnie przejść do synchronizacji.

Synchronizacja na zewnętrznym udziale SAMBA plików utworzonych po wybranej dacie

  • Skrypt synchronizuje dane na zewnętrznym udziale sieciowym podłączanym na żądanie.

  • Jest użyte polecenie find w celu odnalezienia plików utworzonych po wybranej dacie.

  • Dodatkowo skrypt jest zabezpieczony przed kilkukrotnym uruchomieniem, za pomocą pliku PID.

Źródło skryptu:

#!/bin/bash

SKRYPT=$(basename $0)
PIDFILE=/var/run/user/$(id -u)/$SKRYPT.pid
#PID="$(<"$PIDFILE")"

[ -f $PIDFILE ] || echo 9999999 > $PIDFILE

PID_OLD=$(pgrep -F $PIDFILE)
if [ $? -eq 0 ]; then
    echo Poprzedni proces skryptu \"$SKRYPT\" nadal działa.
    exit
fi

echo $$ > $PIDFILE

umount /mnt/wd-nowy
mount.cifs //10.1.1.223/udzial /mnt/wd-nowy -o user=uzytkownik,passwd=tajne-haslo

mount | grep /mnt/wd-nowy > /dev/null
if [ $? == 1 ]; then
    echo Dysk sieciowy nie jest podłączony!
    exit
fi

find /home/user/ -newermt "2018-11-10 00:00:00" -type f -print0 | rsync -a -0 -stats --files-from=- / /mnt/wd-nowy

sleep 12
umount /mnt/wd-nowy

rsync z pominięciem wybranych plików lub katalogów

  • do wykluczeń jest używany parametr --exclude


DATA=$(date +%F-%T)

rsync -avz -e 'ssh -p 12345' /home/samba/ root@192.168.0.222:/home/samba \
    --exclude=samba.tar --exclude=backup \
    --log-file=rsync-samba-$DATA.log

Date: 2020-10-21T21:51:21+02:00