W tym temacie przedstawię rclone - proste narzędzie do wykonania synchronizacji/kopii zapasowej plików. Pokażę tutaj gotowy do użycia skrypt który pozwala na wykonanie kopii wybranych folderów za pomocą tylko jednego kliknięcia a cała kopia będzie działać na zasadzie przyrostowej, więc będzie to znacznie lepsze rozwiązanie niż klasyczne CTRL+C i CTRL+V wciąż stosowane przez tak wiele osób, również tych technicznych.
Po co w ogóle rclone jest potrzebny?
W dzisiejszych czasach elektronika jest już na stałe powiązana z komputerem. Wszystkie dane już trzymamy cyfrowo - czy tam schematy, czy noty katalogowe, czy też projekty firmware na mikrokontrolery i dokumentację. Wszystkie te pliki są jednak narażone na utratę w najmniej oczekiwanym momencie. Nośniki cyfrowe danych mogą w każdej chwili zawieść a wtedy potencjalne odzyskiwanie danych, nawet jeśli jest możliwe, to jest trudne i problematyczne. Nawet jeśli nośnik nie zawiedzie, to grożą nam też wirusy typu ransomware... Oczywiście rclone to tylko jedna z opcji, a ja z reguły polecam korzystać z wielu na raz (tak samo jak należy korzystać z wielu kopii zapasowych - zasada 3-2-1 - czyli "należy mieć 3 kopie, na 2 różnych nośnikach, gdzie 1 z nich jest na innej lokalizacji"), ale w tym temacie będzie tylko mowa o rclone.
Skąd wziąć rclone?
Omawiane narzędzie jest wieloplatformowe i dostępne do pobrania całkowicie za darmo m. in. tutaj:
https://rclone.org/downloads/
Po prostu pobieramy i wypakowujemy paczkę dla naszej platformy.
Dostajemy w ten sposób oczekiwane exe:
Nie jest to jednak program okienkowy, tylko narzędzie dla linii komend, więc trzeba będzie napisać skrypt...
Mój skrypt rclone
Dokumentacja jest dostępna na stronie z pobieraniem, ale dla uproszczenia podam Wam tutaj mój gotowy skrypt:
rclone.exe sync W:/ X:/W --progress --transfers=64 --delete-excluded --exclude "Library/**" --exclude "Debug/**" --exclude "Release/**" --exclude "Android/**" --exclude "$RECYCLE.BIN/**" --exclude "Virtual Machines/**" --exclude "GIT/**" --exclude "C-Sky/**" --exclude ".venv" --exclude "NoBackupToDelete/**" --delete-before
pause
Powyższy skrypt po uruchomieniu odwzoruje zawartość katalogu W:/ w katalogu X:/W. Po jego wykonaniu katalog docelowy będzie stanowić 1:1 odwzorowanie katalogu źródłowego, to oznacza, że jeśli coś usuniemy z katalogu źródłowego to w docelowym też to zniknie. Postęp kopiowania będzie widoczny w okienku konsoli. Maksymalna ilość przesyłań plików na raz tutaj to 64. Dodatkowo skrypt wyklucza kilka folderów z synchronizacji, do których podane są ścieżki - w tym wyklucza kosz (RECYCLE.BIN). Dodatkowo załącza on opcję --delete-before, która określa, że usunięty na źródle pliki są usuwane na kopii przed dokonaniem na nią transferów nowych plików.
Jak korzystać z tego skryptu?
Zasadniczo to jest kilka możliwości:
- można po prostu mieć w komputerze drugi dysk na kopie (w laptopach można czasem wymienić stację CD/DVD na kieszeń na dysk), chociażby HDD, nie musi to być szybki dysk
- można podłączać dysk zewnętrzny i ręcznie wywoływać skrypt
- można również zmapować dysk sieciowy, wtedy rclone też zadziała
Wywoływanie skryptu może być również automatyczne bądź ręczne. Wszystko zależy od tego, przed czym chcemy się chronić. Posiadanie kopii na drugim dysku w komputerze nie uratuje nas np. przed ransomware...
Jakie są wady i zalety tego skryptu?
Zacznijmy od zalet:
+ prostota, znacznie prostsze od copy & paste
+ kopiowane jest tylko to co się zmieniło względem poprzedniej kopii
+ usunięte pliki na źródle są usuwane też u celu
Ale te rozwiązanie też ma wady, których musimy być świadomi:
- jeśli edytujemy jakiś ważny dokument i go nadpiszemy i wykonamy kopię, to poprzednia wersja zostanie nadpisana (to rozwiązanie to nie SVN/GIT, nie przechowuje historii zmian)
- jeśli nieświadomie coś usuniemy i też odpalimy sync, to z kopii też zostanie on usunięty
- jeśli coś nam przykładowo zaszyfruje pliki, to jak wyżej, wykonanie synchronizacji popsuje kopie
Oprócz tego jest jeszcze jeden problem, ale nie jest on związany bezpośrednio z tym skryptem - kopiowanie dużych ilości małych plików trwa dużo czasu. Jeśli chcemy zachować na dłużej np. jakieś repozytorium GIT z kodem, to warto rozważyć użycie archiwum RAR z danymi naprawczymi. Jedno duże archiwum RAR kopiować się będzie znacznie szybciej niż wiele małych plików.
Mimo wszystko myślę, że skrypt jest przydatny (a przynajmniej jest krokiem do przodu względem metody "CTRL + C i CTRL + V") - czy korzystacie z tego typu rozwiązań? A może jesteście w stanie zaproponować jakąś formę ulepszenia tego skryptu? Zapraszam do dyskusji.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
