Na Windowsie rsync uruchomisz dwiema drogami: cwRsync (natywny port do CMD i PowerShell, lekki, dobry do skryptów i Harmonogramu zadań) albo WSL (pełny Linux wewnątrz Windows, najwygodniejszy, gdy już pracujesz z dystrybucją). Do synchronizacji z serwerem przez SSH wystarczy jedno z nich.
Reszta tekstu to instalacja krok po kroku, podstawowe komendy i pułapki, które łapią ludzi przy pierwszym transferze Windows - Linux.
Dla kogo jest ten poradnik
Piszę to dla trzech grup, które najczęściej szukają rsync na Windowsie:
- administratorzy synchronizujący katalogi między stacją Windows a serwerem Linux,
- deweloperzy robiący deploy plików na VPS przez SSH (szybciej i czyściej niż FTP),
- osoby robiące backup zdalny z dysku Windows na serwer, przyrostowo, bez przesyłania wszystkiego od nowa.
Jeśli łączysz się z serwerem przez klucze i chcesz zrozumieć sam protokół, zacznij od tekstu SSH od podstaw | wysoka | dostęp do dysków przez /mnt/c | codzienna praca, gdy lubisz Linuksa |
| cwRsync | łatwa (instalka + PATH) | wysoka | natywna, działa w CMD/PowerShell | skrypty .ps1/.bat, Harmonogram zadań |
| Cygwin | trudniejsza | wysoka | środowisko POSIX obok Windows | gdy i tak masz całą platformę Cygwin |
| Robocopy | łatwa | wysoka lokalnie | natywna, wbudowana | kopiowanie Windows - Windows (bez SSH) |
Czym jest rsync i dlaczego nie ma go natywnie na Windows
rsync to narzędzie do przyrostowej synchronizacji plików. Jego siła to delta-transfer - zamiast kopiować cały plik od nowa, wykrywa i przesyła tylko te fragmenty, które się zmieniły. Przy powtarzalnym backupie dużego katalogu to różnica między transferem sekund a transferem godzin.
Na Uniksie i Linuksie rsync jest standardem - siedzi w repozytorium każdej dystrybucji i uruchamiasz go jedną komendą. Na Windowsie go nie ma, bo to narzędzie ze świata POSIX, a Microsoft nigdy nie dołożył go do systemu. Stąd cały ekosystem obejść: natywne porty (cwRsync, rsync-win), pełne środowiska zgodności (Cygwin, MSYS2) i warstwa Linuksa uruchamiana w Windowsie (WSL).
Wszystkie te drogi prowadzą do tej samej binarki rsync - różnica jest w tym, ile środowiska ciągnie się za nią i jak wyglądają ścieżki do plików. Do najczęstszych zastosowań na Windowsie należy backup zdalny na VPS, deploy strony przez SSH i mirror katalogu Windows na serwer Linux.
Trade-off: WSL daje ci prawdziwego Linuksa (najmniej niespodzianek z komendami), ale ciągnie za sobą warstwę wirtualizacji. cwRsync jest lekki i natywny, za to musisz ręcznie tłumaczyć ścieżki Windows na format uniksowy. Niżej pokazuję oba.
Metoda 1: WSL (zalecana, gdy chcesz pełnego Linuksa)
WSL, czyli Windows Subsystem for Linux, uruchamia pełną dystrybucję (najczęściej Ubuntu albo Debian) wewnątrz Windows 10 i Windows 11. rsync dostajesz wtedy dokładnie taki, jaki znasz z serwera - z pełną zgodnością flag i zachowania.
Krok po kroku:
-
Otwórz PowerShell jako administrator i zainstaluj WSL:
wsl --installDomyślnie pobierze Ubuntu. Jeśli wolisz inną dystrybucję, dodaj
-d Debian. -
Zrestartuj komputer, gdy instalator o to poprosi. Po restarcie WSL dokończy konfigurację i poprosi o nazwę użytkownika oraz hasło dla Linuksa.
-
W terminalu dystrybucji zainstaluj rsync (na Ubuntu/Debian):
sudo apt update && sudo apt install rsync -
Sprawdź, że działa:
rsync --version
Sprawdź: dyski Windows widzisz w WSL pod /mnt. Dysk C: to /mnt/c, dysk D: to /mnt/d. Czyli folder C:\projekty\strona w komendzie rsync zapiszesz jako /mnt/c/projekty/strona. To jedyne tłumaczenie ścieżki, które musisz zapamiętać przy WSL.
Trade-off WSL: dostęp do plików leżących na dysku Windows (przez /mnt/c) jest wyraźnie wolniejszy niż do plików trzymanych w natywnym systemie plików WSL. Przy synchronizacji dziesiątek tysięcy małych plików z /mnt/c poczujesz narzut I/O. Pro tip admina: jeśli robisz ciężki, powtarzalny transfer, trzymaj dane robocze w systemie plików Linuksa (np. ~/dane), a nie na /mnt/c.
Metoda 2: cwRsync (natywnie, do CMD/PowerShell i Harmonogramu zadań)
cwRsync to spakowany port rsync dla Windows, oparty na bibliotekach Cygwin, ale bez konieczności instalowania całego Cygwina. Działa prosto z CMD i PowerShell, co czyni go najlepszym wyborem do skryptów i zadań cyklicznych.
Krok po kroku:
-
Pobierz cwRsync w wersji free/open (paczka zawiera
rsync.exe,ssh.exei biblioteki Cygwin). Rozpakuj do stałego katalogu, np.C:\Program Files\cwrsync. -
Dodaj podkatalog
bintej instalacji do zmiennej środowiskowej PATH, żebyś mógł wołaćrsyncz dowolnego miejsca. W PowerShell (jednorazowo dla sesji):$env:Path += ";C:\Program Files\cwrsync\bin"Na stałe ustawisz to w: System -> Zaawansowane ustawienia systemu -> Zmienne środowiskowe.
-
Zweryfikuj:
rsync --version
Pułapka ścieżek (najczęstsza przy cwRsync): binarka pochodzi z Cygwin, więc liter dysków nie zapiszesz po windowsowemu. C:\dane musi trafić do komendy jako /cygdrive/c/dane. To odpowiednik /mnt/c z WSL - tylko inaczej nazwany. Backslashy \ w ogóle nie używaj wewnątrz ścieżki rsync; zawsze ukośniki /.
Kiedy cwRsync bije WSL: skrypty .bat i .ps1, które odpalasz z Harmonogramu zadań (Task Scheduler), oraz maszyny, na których nie możesz albo nie chcesz włączać WSL. cwRsync to jeden katalog binarek - kopiujesz, dodajesz do PATH i działa, bez wirtualizacji w tle.
Inne porty warte odnotowania: Cygwin pozwala doinstalować pakiet rsync w ramach pełnego środowiska POSIX - sensowne, gdy i tak korzystasz z Cygwina do innych rzeczy. Jest też MSYS2 oraz nowszy projekt rsync-win (wrapper w języku Rust wokół binarek Cygwin). Git Bash bywa mylnie brany za gotowe rozwiązanie - domyślnie nie ma w nim rsync, dokładasz go ręcznie, więc do prostego zadania cwRsync jest szybszy w starcie.
Podstawowe komendy rsync
Sama komenda rsync jest identyczna niezależnie od tego, czy odpalasz ją w WSL, czy w cwRsync - różnią się tylko zapisem ścieżek. Poniższe przykłady działają tak samo w obu środowiskach.
Synchronizacja lokalna (skopiuj zawartość jednego katalogu do drugiego):
rsync -av zrodlo/ cel/
Ukośnik na końcu zrodlo/ ma znaczenie: kopiuje zawartość katalogu, a nie sam katalog. To klasyczna wpadka - bez ukośnika rsync tworzy podkatalog zrodlo wewnątrz cel.
Synchronizacja na serwer przez SSH (deploy albo backup zdalny):
rsync -avz -e ssh /mnt/c/projekty/strona/ user@twoj-serwer:/var/www/strona/
Rozbicie flag, bo warto rozumieć, co robisz:
-a(archive) - tryb archiwum: rekurencja plus zachowanie uprawnień, dowiązań i czasów modyfikacji,-v(verbose) - wypisuje, co jest przesyłane,-z(compress) - kompresuje dane w locie, opłaca się przez sieć,-e ssh- transport po SSH (możesz dodać port, np.-e "ssh -p 2222"),--delete- usuwa w celu pliki, których nie ma już w źródle (prawdziwy mirror; używaj świadomie),--progress- pokazuje pasek postępu per plik,--dry-run- symulacja: pokazuje, co by zrobił, bez ruszania plików.
Pro tip admina: każdą nową komendę z --delete odpal najpierw z --dry-run. Raz źle wpisana ścieżka źródłowa plus --delete potrafi wyczyścić katalog docelowy. Symulacja kosztuje sekundę, a chroni przed najgorszym scenariuszem.
Kierunek Windows na Linux to zwykły upload - źródło lokalne, cel zdalny (jak wyżej). Kierunek Linux na Windows to odwrócenie argumentów: źródło zdalne, cel lokalny.
rsync -avz -e ssh user@twoj-serwer:/var/www/strona/ /mnt/c/kopie/strona/
Jeśli potrzebujesz przerzucić pojedyncze pliki, a nie synchronizować cały katalog, prostszy bywa scp - pokazuję jego użycie na Windowsie w tekście scp na Windows.
Backup zdalny na VPS to najczęstszy powód, dla którego w ogóle stawiasz rsync na Windowsie. Przyrostowy transfer sprawia, że codzienna kopia dużego katalogu schodzi w kilka sekund, bo lecą tylko zmiany. Jeśli dopiero szukasz serwera pod kopie zapasowe albo deploy, zerknij na ranking VPS pod backup zdalny - liczy się tam realny transfer i miejsce, nie hasła marketingowe.
Automatyzacja: w WSL dopisujesz zadanie do cron, w cwRsync tworzysz zadanie w Harmonogramie zadań wskazujące na skrypt .ps1 z komendą rsync. Obie drogi dają backup, o którym nie musisz pamiętać.
Częste błędy i pułapki
rsync: command not found - rsync nie jest zainstalowany albo katalog z binarką nie jest w PATH. W WSL doinstaluj przez apt, w cwRsync sprawdź wpis w zmiennej PATH.
Złe ścieżki - to zdecydowanie najczęstszy problem na Windowsie. Pamiętaj tabelkę: WSL używa /mnt/c, cwRsync używa /cygdrive/c, a backslashy \ nie używasz w ogóle wewnątrz komendy rsync. Większa część błędów "rsync nie widzi mojego folderu" to właśnie pomylony format ścieżki.
Permission denied (publickey) przy transferze po SSH - problem leży po stronie autoryzacji, nie rsync. Klucz nie jest załadowany albo serwer go nie akceptuje. Rozwiązanie znajdziesz w tekście SSH od podstaw, a szerszą diagnostykę odmowy połączenia w SSH connection refused - jak naprawić.
Uprawnienia plików Windows kontra Linux - flaga -a próbuje zachować uniksowe uprawnienia i właścicieli, których system plików Windows nie zna. Efektem bywają błędy i dziwne atrybuty w celu. Przy transferze z NTFS użyj:
rsync -rvz --no-perms --no-owner --no-group -e ssh /mnt/c/dane/ user@twoj-serwer:/backup/dane/
albo narzuć uprawnienia wprost przez --chmod=ugo=rwX.
Wolny transfer lub brak delty - algorytm delta działa parami: rsync musi być po obu stronach połączenia. Jeśli na serwerze go nie ma, transfer zdegraduje się do zwykłego kopiowania. Sprawdź rsync --version na serwerze.
Końce linii CRLF/LF - rsync kopiuje pliki bajt w bajt i nie zamienia zakończeń linii. Plik tekstowy zapisany w Windowsie (CRLF) trafi na Linuksa dokładnie taki, jaki był. Jeśli zależy ci na konwersji, zrób ją osobnym narzędziem; rsync tego nie robi i dobrze, bo dzięki temu jest przewidywalny.
Alternatywy dla rsync na Windows
rsync nie zawsze jest właściwym narzędziem. Krótki przegląd, gdy warto sięgnąć po coś innego:
- Robocopy - wbudowany w Windows, świetny do kopiowania i mirrorowania Windows na Windows w sieci lokalnej. Nie obsługuje SSH, więc do transferu na zdalny serwer Linux odpada.
- WinSCP - klient z GUI i trybem synchronizacji przez SSH/SFTP. Dobry, gdy wolisz klikać niż pisać komendy, choć bez prawdziwej delty rsync.
- FreeFileSync - graficzne narzędzie do porównywania i synchronizacji folderów, wygodne do backupu lokalnego i na dyski sieciowe.
- SyncBackFree - rozbudowany harmonogram backupu z interfejsem, sensowny dla osób nietechnicznych.
- Resilio Sync - synchronizacja peer-to-peer między maszynami, inna filozofia niż jednokierunkowy rsync.
To zależy od zadania: czysto lokalnie, Windows na Windows, bierz Robocopy. Transfer na serwer Linux przez SSH z przyrostową deltą i skryptowaniem - zostajesz przy rsync. GUI dla kogoś, kto nie żyje w terminalu - WinSCP albo FreeFileSync.
FAQ
Czy rsync działa na Windows 10 i 11?
Tak, na obu. Nie ma go natywnie w systemie, ale uruchomisz go na trzy sposoby: przez WSL (pełny Linux w Windows 10 i 11), przez natywny port cwRsync (działa w CMD i PowerShell) albo w ramach środowiska Cygwin. Dla większości osób najprościej zacząć od WSL lub cwRsync.
Jak zainstalować rsync na Windows?
Są dwie główne drogi. WSL: w PowerShellu jako administrator wpisz wsl --install, zrestartuj komputer, a w dystrybucji wykonaj sudo apt install rsync. cwRsync: pobierz paczkę free, rozpakuj do stałego katalogu, dodaj podkatalog bin do zmiennej PATH i sprawdź komendą rsync --version.
Czym różni się cwRsync od WSL?
cwRsync to lekki, natywny port rsync działający prosto z CMD i PowerShell, idealny do skryptów i Harmonogramu zadań. WSL to pełna dystrybucja Linuksa uruchomiona w Windowsie - daje maksymalną zgodność komend, ale ciągnie warstwę wirtualizacji i wolniejszy dostęp do plików leżących na /mnt/c.
Jak zrobić rsync z Windows na Linux przez SSH?
Użyj flagi transportu -e ssh i podaj zdalny cel w formacie user@serwer:/sciezka/. Przykład: rsync -avz -e ssh /mnt/c/projekt/ user@serwer:/var/www/projekt/. Autoryzację najlepiej oprzyj na kluczach SSH, a przy pierwszym uruchomieniu dołóż --dry-run, żeby zobaczyć, co rsync zamierza przesłać.
Jaka jest alternatywa dla rsync na Windows?
Do kopiowania lokalnie Windows na Windows najlepiej sprawdza się wbudowany Robocopy. Do transferu przez SSH z interfejsem graficznym - WinSCP. Do backupu folderów z GUI - FreeFileSync lub SyncBackFree. rsync wygrywa tam, gdzie liczy się przyrostowa delta, transport po SSH i łatwe skryptowanie zadań cyklicznych.
Schema JSON-LD
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "HowTo",
"name": "Jak zainstalować rsync na Windows (WSL i cwRsync)",
"description": "Instalacja i konfiguracja rsync na Windows 10 i 11 dwiema metodami: WSL oraz natywny port cwRsync.",
"step": [
{
"@type": "HowToStep",
"name": "Instalacja przez WSL",
"text": "W PowerShell jako administrator wykonaj wsl --install, zrestartuj komputer, a następnie w dystrybucji uruchom sudo apt update && sudo apt install rsync i sprawdź wersję komendą rsync --version."
},
{
"@type": "HowToStep",
"name": "Instalacja przez cwRsync",
"text": "Pobierz paczkę cwRsync w wersji free, rozpakuj do stałego katalogu, dodaj podkatalog bin do zmiennej środowiskowej PATH i zweryfikuj instalację komendą rsync --version w PowerShell."
},
{
"@type": "HowToStep",
"name": "Synchronizacja przez SSH",
"text": "Uruchom rsync z flagą -e ssh, wskazując zdalny cel w formacie user@serwer:/sciezka/. Przy pierwszym transferze użyj --dry-run, aby zobaczyć planowane zmiany."
}
]
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Czy rsync działa na Windows 10 i 11?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Tak, na obu. Nie ma go natywnie w systemie, ale uruchomisz go przez WSL, przez natywny port cwRsync działający w CMD i PowerShell albo w ramach środowiska Cygwin."
}
},
{
"@type": "Question",
"name": "Jak zainstalować rsync na Windows?",
"acceptedAnswer": {
"@type": "Answer",
"text": "WSL: wykonaj wsl --install, zrestartuj komputer i uruchom sudo apt install rsync. cwRsync: pobierz paczkę free, rozpakuj, dodaj katalog bin do PATH i sprawdź rsync --version."
}
},
{
"@type": "Question",
"name": "Czym różni się cwRsync od WSL?",
"acceptedAnswer": {
"@type": "Answer",
"text": "cwRsync to lekki natywny port działający z CMD i PowerShell, dobry do skryptów i Harmonogramu zadań. WSL to pełna dystrybucja Linuksa w Windowsie z maksymalną zgodnością komend, ale z narzutem wirtualizacji."
}
},
{
"@type": "Question",
"name": "Jak zrobić rsync z Windows na Linux przez SSH?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Użyj flagi -e ssh i podaj cel jako user@serwer:/sciezka/, na przykład rsync -avz -e ssh /mnt/c/projekt/ user@serwer:/var/www/projekt/. Autoryzację oprzyj na kluczach SSH."
}
},
{
"@type": "Question",
"name": "Jaka jest alternatywa dla rsync na Windows?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Do kopiowania Windows na Windows służy wbudowany Robocopy, do transferu przez SSH z GUI - WinSCP, a do backupu folderów - FreeFileSync lub SyncBackFree. rsync wygrywa przy przyrostowej delcie i skryptowaniu."
}
}
]
}
]
}