Pokażę tutaj jak łatwo skonfigurować Linuxowy rsync na Windowsie poprzez WSL a potem użyć go do wykonania kopii naszych plików na lokalnym serwerze NAS poprzez SMB, chociaż analogicznie można wykonywać też kopie na zwykły zewnętrzny dysk twardy. Przedstawiona metoda będzie poniekąd automatyzacją tego, co często wykonujemy całkiem niepotrzebnie ręcznie, więc pozwoli nam ostatecznie oszczędzać czas poświęcony na zapewnianie bezpieczeństwa naszym plikom. Dodatkowo całość będzie działać wydajniej, dzięki temu, że rsync wysyła tylko zmienione pliki i nie kopiuje wszystkiego na ślepo.
Dzisiejsza elektronika jest nieodłącznie powiązana z informatyką. Naprawdę trudno jest wyobrazić sobie przeszukiwanie ton not katalogowych w postaci fizycznych segregatorów zajmujących nam połowę szafy, a nawet trudniej jest wyobrazić sobie projektowanie układu w pełni na papierze - od schematu aż po projekt PCB, który coraz częściej też jest co najmniej dwuwarstwowy. Z tego też powodu uznałem, że warto tu przedstawić metodę automatycznego tworzenia kopii poprzez narzędzie rsync. Rsync jest narzędziem konsolowym, normalnie dostępnym na systemach Linuxowych, ale przy odrobinie starań można je uruchomić też na Windowsie. Przedstawię tu ten cały proces krok po kroku i być może uratuję kogoś przed utratą plików.
Krok 1 - Instalujemy WSL
Te Windowsowe kroki pomijamy, jeśli jesteśmy na Linuxie!
Od jakiegoś czasu Microsoft oferuje nam możliwość instalacji WSL, czyli tzw. Windows Subsystem for Linux. WSL pozwala zainstalować nam dystrybucję Linuxa (taką jak Ubuntu, OpenSUSE, Kali, Debian, Arch Linux, itp) na Windowsie bez potrzeby uciekania się do mniej wydajnych i niewygodnych rozwiązań takich jak dual boot czy tam wirtualna maszyna. Dzięki temu możemy uruchamiać programy Linuxowe z poziomu naszej dziesiątki (czy tam jedenastki..).
Przed instalacją musimy sprawdzić, czy spełniamy wymagania.
Potrzebny jest Windows 10 wersja2004 lub wyższa (Build 19041 lub wyższy) lub Windows 11. Jeśli tego nie spełniamy, to wykonujemy aktualizację.
Potem otwieramy PowerShell - jako administrator:
Wpisujemy wsl --install:
Rozpocznie się wtedy mozolny proces instalacji:
Czekamy:
U mnie dalej domyślnie zaczęło instalować się Ubuntu, ale instalacja utknęła na 0.6%:
Proces przerwałem i wykonałem niezbędny restart maszyny. Ponowić można komendą wsl --install -d Ubuntu:
Po chwili zainstaluje się nasz Linuxowy system i uruchomi nam się prompt Ubuntu.
Krok 2 - finalizujemy Ubuntu na Windows
Pora skonfigurować nasze Windowsowe Ubuntu. Podajemy nazwę użytkownika i hasło:
Ubuntu jest wybredne, musiałem podać nazwę z małej litery:
Ustalamy też hasło, sam wybrałem dość krótkie, czteroliterowe:
Krok 3 - zapoznanie z Ubuntu
Od tej pory możemy wpisać na Windowsowym pasku "WSL" i tak uruchamiać Linuxową linię komend:
U mnie to wygląda tak:
Oczywistą konsekwencją tego jest to, że trzeba znać linuxowe komendy. Czyli operujemy poprzez cd (zmiana folderu), mkdir (tworzenie), chmod (ustawienie uprawnień), itd, itp. Nasze dyski znajdziemy w folderze mnt:
Przykładowo poniżej zajrzałem do mojego dysku W - tam z małej litery. Wszystkie pliki są widoczne:
Krok 4 - podpięcie nośnika na kopię zapasową do WSL
Teraz jeszcze trzeba uzyskać w WSL dostęp do naszego nośnika od kopii zapasowej. Początkowo chciałem użyć normalnie linuxowym sposobem SMB, czyli zmapować zasób Samby do mnt poprzez mount, ale nie chciało to tutaj działać.
Ostatecznie uznałem, że zmapuję mój serwer na Windowsie jako dysk sieciowy.
Wykonuje się to w Ten Komputer, tutaj:
Przeklikujemy kreatora:
Podajemy adres udziału w formacie \\serwer\udział:
Poniżej macie przykład, jak to wyglądało u mnie:
Warto zaznaczyć pole od automatycznego łączenia po restarcie.
Potem u mnie początkowo dysk się nie pojawiał, ale po restarcie wszystko już było ok:
Jeśli chcemy kopiować na zwykły dysk podłączony przez USB to jest nawet prostsze - nie trzeba mapować dysku sieciowego.
Krok 5 - komenda rsync
Nazwa rsync pochodzi od Remote Sync - czyli od zdalnej synchronizacji. Nie jest to zwykłe polecenie cp, tylko znacznie więcej. Rsync oferuje dużo przełączników i możliwości, o czym można poczytać w dokumentacja:
https://linux.die.net/man/1/rsync
Rsync jest znacznie wydajniejszym rozwiązaniem niż ślepe kopiowanie danych. Rsync analizuje pliki i przesyła tylko to, co się zmieniło. Rsync można łatwo wznowić i wstrzymać. Rsync też kompresuje dane przy przesyłaniu.
Samego rsync nie musiałem nawet instalować. Musiałem jedynie zamontować nowo dodany udział sieciowy do WSL poprzez najpierw utworzenie mu folderu w mnt (jako root) komendą mkdir:
A potem poprzez wykonanie mount:
sudo mount -t drvfs X: /mnt/x
Na skutek tego WSL zaczął widzieć też pliki z mojego zmapowanego dysku sieciowego.
Potem wystarczyło użyć komendy rsync.
Na próbę polecam:
rsync -av --delete --dry-run /mnt/w /mnt/x/b/w
Podstawowa składnia to:
rsync [przełączniki] [źródło] [cel]
To wykona kopię plików ze źródła na podanym celu.
Rozszyfrujmy kolejno argumenty:
- a to tryb archiwalny (rekursywna synchronizacja z opcją zachowania atrybutów)
- v - tryb verbose (wyświetlanie postępu i informacji o przetwarzaniu)
- delete - usuwa pliki na docelowej lokalizacji, które nie istnieją na źródłowej lokalizacji
- dry-run - włącza tryb symulacji, w którym rsync wyświetla, co by się stało, ale nie wykonuje faktycznej synchronizacji, więc można eksperymentować do woli
Tak to wyglądało u mnie:
rsync również będzie podawać informacje o usuwanych plikach. No i oczywiście - proces można przerwać i wznowić, całość działa "sprytnie" i nie kopiuje na ślepo, jest to wydajne rozwiązanie.
Podsumowanie
Instalacja WSL na Windowsie naprawdę otwiera duże możliwości i pozwala uruchamiać wygodnie wiele wygodnych, wcześniej raczej niezbyt dostępnych aplikacji na "okienkach". Rsync jest jedną z nich i radzi sobie całkiem nieźle, tym bardziej, że synchronizuje wszystko lokalnie. Nie ma tu żadnych chmur, Boxów, Drive'ów, czy tam innych komercyjnych pośredników, dodatkowo ciągle próbujących nas namówić na dokupienie dodatkowego miejsca na pliki. Z tego powodu uważam, że przedstawione tu rozwiązanie jest atrakcyjne dla osób ceniących sobie prywatność i chcących mieć wszystko w pełni pod swoją kontrolą.
Na koniec przypomnę jeszcze o ważnej zasadzie 3-2-1:
- 3 oznacza, że wszystkie nasze dane powinny być przechowywane w co najmniej 3 kopiach (3 x backup)
- 2 oznacza, że kopie powinny być co najmniej na dwóch różnych nośnikach
- 1 oznacza, że co najmniej jedna kopia powinna znajdować się w innym miejscu (fizycznie, tzw. off-site backup)
U mnie tych kopii jest nieco więcej, bo też regularnie wypalam płytki DVD ze zrzutami z postępów prac, ale te 3 (a może 4?) kopie to jest takie minimum, gdy coś jest ważne.
To tyle z mojej strony. Jakby coś nie było jasne, to proszę pytać na forum, pomogę.
Mam nadzieję, że chociaż jedną osobę tak uratuję od utraty danych...
Czy ktoś z czytelników korzysta z rsync? A może macie jakieś inne metody zabezpieczania się przed utratą danych?
PS: Z tymi co najmniej trzema kopiami to nie jest żart - dopiero co na naszym forum czytałem historię użytkownika, który niby robił kopię, ale jak popsuł się główny nośnik (taki z SMR - ale to inna sprawa...) to ta kopia go zawiodła... więc trzy kopie to minimum.
PS2: Tak jeszcze dla jasności - nic nie zastąpi systemu kontroli wersji, ale jeśli jest mowa np. o zdjęciach itd, to raczej rsync starczy
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
