logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Automatyczna kopia zapasowa - rclone - przykładowy skrypt - jak uchronić się przed utratą plików?

p.kaczmarek2 27 Mar 2024 10:30 1665 2
REKLAMA
MediaMarkt Black Week
  • Automatyczna kopia zapasowa - rclone - przykładowy skrypt - jak uchronić się przed utratą plików?
    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:
    Automatyczna kopia zapasowa - rclone - przykładowy skrypt - jak uchronić się przed utratą plików?
    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ę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • REKLAMA
    MediaMarkt Black Week
  • #2 21024402
    karroryfer
    Poziom 12  
    w sumie to ciekawe że nie ma ( albo przynajmniej nie znam) narzędzia które w przypadku zmienionych plików pozwalało by przyrostowe dodanie tylko i wyłącznie zmian
    (dokładniej to są takie ale to raczej większe systemy backup a nie synchronizacji )
  • #3 21025644
    Sam Sung
    Poziom 33  
    Przyrostowo to można robić backup np. przy pomocy GNU tar, szyfrowanie GnuPG.
    tar c -g ~/backup/moje_dane1.snar --totals -X ~/backup/exclude -C ~/moje_dane1 . | pbzip2 | gpg2 --compress-algo=none --encrypt --default-recipient-self > ~/backup/moje_dane1.poziom_N.bz2

    Główną zaletą tego całego rclone - jak rozumiem - jest wgrywanie plików do chmury, bo między dyskami czy komputerami w sieci lokalnej to można kopiować pliki zwykłym rsync'iem. Jeśli jednak wygenerujemy sobie zaszyfrowane przyrostowe kopie zapasowe np. tak jak pokazałem wyżej, to użycie rclone w celu wrzucenia ich na konta w chmurach może nabrać sensu.
    Odtwarzanie takiego backupu wygląda tak - od pustego katalogu dla każdego pliku w kolejności przyrostów:
    gpg2 --decrypt ~/backup/moje_dane1.poziom_N.bz2 | pbzip2 -d | (cd ~/moje_dane1 && tar x -g /dev/null)

    Zamiast podawać litanię argumentów --exclude, w ~/backup/exclude wpisujemy np.
    *~
    *.class
    *.o
    *.iso
    *.img
    bzImage
    node_modules
    output
    

    (podejrzewam, że rclone też tak potrafi i nie trzeba pisać funfnaście razy --exclude)
    Używanie rclone do zwykłego kopiowania plików z dysku na dysk to przerost formy nad treścią. Ewentualnie pokazuje to ubóstwo Windowsa w dziedzinie przetwarzania wsadowego. Może jakiś znawca cmd.exe albo PowerShella uratuje honor Windowsa i pokaże, jak zrobić tak trywialną rzecz prawidłowo czyli bez rclone? :)
REKLAMA