Artykuł Serwery

rsync na Windows - jak zainstalować i używać (cwRsync, WSL)

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:

  1. Otwórz PowerShell jako administrator i zainstaluj WSL:

    wsl --install

    Domyślnie pobierze Ubuntu. Jeśli wolisz inną dystrybucję, dodaj -d Debian.

  2. Zrestartuj komputer, gdy instalator o to poprosi. Po restarcie WSL dokończy konfigurację i poprosi o nazwę użytkownika oraz hasło dla Linuksa.

  3. W terminalu dystrybucji zainstaluj rsync (na Ubuntu/Debian):

    sudo apt update && sudo apt install rsync
  4. 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:

  1. Pobierz cwRsync w wersji free/open (paczka zawiera rsync.exe, ssh.exe i biblioteki Cygwin). Rozpakuj do stałego katalogu, np. C:\Program Files\cwrsync.

  2. Dodaj podkatalog bin tej instalacji do zmiennej środowiskowej PATH, żebyś mógł wołać rsync z 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.

  3. 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."
          }
        }
      ]
    }
  ]
}