Zbuduj bezpieczną komendę rsync, skopiuj, potem uruchom
rsync to standardowe narzędzie do kopiowania plików między dwiema lokalizacjami (lokalny folder, inny folder, zdalny serwer po SSH) i przesyła tylko to, co się zmieniło. Dlatego idealnie nadaje się do backupów, deploy strony, mirrorowania NAS-a, synchronizacji dwóch maszyn. Haczyk: komenda ma ponad 50 flag, kolejność ma znaczenie, a literówka z `--delete` potrafi skasować dane, których chciałeś nie ruszać.
Ten builder pokazuje pełną komendę w podglądzie na żywo: wybierasz preset (deploy, backup, mirror), klikasz flagi które chcesz, wpisujesz źródło i cel, kopiujesz wynik. Wizualnie pokazuje pułapkę z końcowym slashem (`src/` kontra `src` to różne kopie), ostrzega zanim uzbroisz `--delete` bez `--dry-run`, i łamie komendę liniami żebyś mógł ją przeczytać przed wklejeniem w terminalu.
Wszystko leci w przeglądarce: nic nie idzie nigdzie dalej, żadne SSH nie jest nawiązywane, narzędzie tylko składa tekst. Wkleisz wynik do własnego shella kiedy będziesz gotowy.
Jak używać
- Wybierz scenariusz u góry: lokalnie do lokalnie, lokalnie do zdalnego (push po SSH), zdalne do lokalnego (pull), zdalne do zdalnego. Placeholdery dla źródła i celu zmienią się tak, żebyś wiedział jaki ma być format.
- Wpisz źródło (folder z którego kopiujesz) i cel (gdzie ma trafić). Dla zdalnych ścieżek wzorzec to `uzytkownik@host:/absolutna/sciezka`.
- Zwróć uwagę na końcowy slash w źródle. Z `/var/www/site/` kopiujesz zawartość folderu. Bez slasha (`/var/www/site`) kopiujesz sam folder jako podkatalog celu. Diagram po prawej pokazuje co dzieje się w aktualnym stanie.
- Wybierz tryb: Archive (zachowaj wszystko), Backup (stare wersje trafiają obok), Mirror (cel ma być dokładną kopią źródła, kasuje nadmiar), Deploy (skompresowane, mirror, pomija `.git`), albo Custom żeby klikać flagi ręcznie.
- Rozwiń Opcje transferu żeby dodać kompresję (`-z`, przydatne przez SSH), progres (`--progress`), poziom verbose, tryb próbny (`-n`, polecany za pierwszym razem) albo kasowanie nadmiaru (`--delete`, ostrożnie).
- Dodaj wzorce wykluczeń (po jednym w linii, np. `.git`, `node_modules`, `*.log`) i wzorce włączeń jeśli rsync ma zostawić jakieś pliki wewnątrz wykluczonego folderu.
- Dla celów SSH uzupełnij port i plik klucza prywatnego w sekcji SSH. Builder opakuje to w `-e "ssh -p N -i path/key"` za Ciebie.
- Skopiuj pełną komendę z prawego panelu i wklej w terminal. Pierwszy raz zawsze odpalaj z `--dry-run` kiedy włączyłeś coś niszczącego.
Kiedy się przydaje
Osiem sytuacji, w których zbudowanie komendy rsync z głową ratuje przed niespodzianką:
- Deploy strony na VPS. Zmieniłeś kilka plików lokalnie i chcesz je na serwerze. `rsync -avz --delete --exclude='.git' --exclude='node_modules' /local/site/ user@host:/var/www/site/`. Tylko zmienione pliki lecą siecią, cel jest identyczny ze źródłem, a foldery wersjonowania zostają w domu.
- Nocny backup home folderu na NAS. Montujesz NAS-a, potem `rsync -avh --delete /home/me/ /mnt/nas/backup/me/`. Po pierwszym przebiegu (kopiuje wszystko) każdy kolejny zajmuje sekundy, bo lecą same różnice.
- Ściąganie logów z produkcji do analizy. `rsync -avz --progress user@prod:/var/log/app/ ./logs/`. `--progress` pokazuje ETA per plik, przydatne kiedy dump ma 5 GB.
- Przerzucenie zdjęć z karty SD. `rsync -avh --progress /Volumes/SDCARD/DCIM/ ~/Pictures/2026/`. rsync weryfikuje każdy plik po skopiowaniu, w przeciwieństwie do zwykłego drag-and-drop w Finderze, który potrafi po cichu uciąć plik gdy wyrwiesz kartę za wcześnie.
- Synchronizacja dumpa bazy między dwoma serwerami. `rsync -avz --partial --append --bwlimit=5000 server-a:/dumps/ server-b:/dumps/`. Limit pasma trzyma transfer poniżej łącza biurowego. `--partial --append` pozwala wznowić jeśli SSH padnie w połowie 50 GB.
- Synchronizacja dotfiles między laptopem a desktopem. `rsync -avh --exclude-from=excludes.txt ~/dotfiles/ desktop:~/dotfiles/`. Łatwiej niż git, kiedy nie chcesz tworzyć repo, szybciej niż kopiowanie ręcznie.
- Wyrównanie celu, który odpłynął od źródła. W celu zostały pliki, których źródło już nie ma. `rsync -avn --delete /src/ /dest/` (uwaga na `-n` = dry run) wypisze co zostałoby skasowane. Jak się zgadza, zdejmujesz `-n` i odpalasz na ostro.
- Migracja serwera na nowy sprzęt. `rsync -avzAX --numeric-ids --delete /` ze starego do nowego (po SSH, jako root, z głową) zachowuje uprawnienia, ACL i extended attributes, dzięki czemu nowy serwer startuje w identycznym stanie.