LINUX: rsync
Instalacja (choć w Debianie 12 rsync powinien być):
apt install rsync
Przykład: kopiujemy zawartość katalogu /var/www/bookstack
RSYNC: katalogu /var/www/bookstack z serwera źródłowego do serwera docelowego
- serwer zrodlowy: 51.77.39.150
- serwer docelowy: 51.68.132.218
Założenia:
-
Masz dostęp SSH do obu serwerów
-
Użytkownik it na serwerze docelowym ma prawo zapisu do
/var/www/bookstack -
Synchronizujemy zawartość katalogu, a nie sam katalog (ważny ukośnik
/)
Najczęstszy i zalecany wariant (uruchamiany na serwerze źródłowym):
rsync -avz --delete --dry-run /var/www/bookstack/ it@51.68.132.218:/var/www/bookstack/
Opcje:
-
-a – tryb archiwum (uprawnienia, właściciel, symlinki, czasy)
-
-v – tryb gadatliwy (widzisz co się kopiuje)
-
-z – kompresja w trakcie transferu
-
--delete – usuwa na serwerze docelowym pliki, których nie ma już na źródłowym
- --dry-run - symulacja kopiowania (pokaże co będzie kopiował)
-
ukośnik na końcu /bookstack/→ kopiuje zawartość, nie katalog jako podkatalog
Właściwe polecenie:
rsync -avz --delete /var/www/bookstack/ it@51.68.132.218:/var/www/bookstack/
Nadanie uprawnień do katalogu, w przypadku problemów:
chown -R it:it /var/www/bookstack
Pominięcie niektórych podkatalogów, np. cache, logs:
rsync -avz --delete \
--exclude 'storage/cache/' \
--exclude 'storage/logs/' \
/var/www/bookstack/ it@51.68.132.218:/var/www/bookstack/
Żeby nie zamazać istniejących uprawnień na serwerze docelowym, musisz w rsync nie przenosić: właściciela, grupy i (opcjonalnie) samych praw plików. Najbezpieczniej dla typowego /var/www/... jest wyłączyć te atrybuty i synchronizować tylko treść + czasy.
Zalecane polecenie (nie rusza owner/group/perms na celu)
Uruchamiasz na serwerze, z którego kopiujesz:
rsync -rtvz --no-perms --no-owner --no-group /var/www/bookstack/ it@51.68.132.218:/var/www/bookstack/
-
kopiuje pliki i katalogi (
-r) -
zachowuje czasy modyfikacji (
-t) -
nie zmienia uprawnień (
--no-perms) -
nie zmienia właściciela i grupy (
--no-owner --no-group)
Uwaga: nie używam
-a, bo-adomyślnie przenosi perms/owner/group.
Aby skopiować tylko nowe pliki (takie, które nie istnieją na serwerze docelowym), w rsync używa się opcji --ignore-existing.
rsync -rtvz --ignore-existing /var/www/bookstack/ it@51.68.132.218:/var/www/bookstack/
Opcje:
-
kopiuje wyłącznie pliki, których NIE MA na serwerze docelowym
-
nie nadpisuje istniejących plików
-
nie zmienia uprawnień, właściciela ani grupy (bo nie używamy
-a)
Synchronizacja dwukierunkowa
rsyncnie ma natywnej synchronizacji dwukierunkowej jak np. Syncthing. Robi się to dwoma poleceniami (A → B i B → A).
1️⃣ Synchronizacja: źródłowy → docelowy
(uruchamiane na serwerze 51.77.39.150)
2️⃣ Synchronizacja: docelowy → źródłowy
(uruchamiane na serwerze 51.77.39.150 – nadal)
To razem daje dwukierunkową synchronizację bez kasowania plików.
No comments to display
No comments to display