Przejdź do głównej treści

Kopia zapasowa Microsoft 365 (SharePoint i OneDrive) za darmo z użyciem Raspberry Pi i Rclone

Zawartość

Gdy zaczynałem pracę u mojego pracodawcy, używali oni lokalnego serwera i przechowywali pliki na miejscu, z nocnymi kopiami zapasowymi na zewnętrzne dyski mobilne. Wszystko było ograniczone prędkością łącza szerokopasmowego (internetu), co w Anglii jest dość szalone – parki biznesowe rzadko mają dostęp do niedrogich połączeń światłowodowych, podczas gdy w domu można uzyskać tani synchroniczny światłowód. Kiedy nadeszła zmiana (a raczej firma musiała w nią zainwestować), przenieśliśmy wszystko do chmury.

Wybraliśmy Microsoft 365 jako naszego dostawcę.

Po zakończeniu migracji i przyzwyczajeniu się ludzi do nowego sposobu dostępu do plików (który niewiele się zmienił dzięki integracji aplikacji OneDrive z systemem Windows, poza używaniem linków do plików), musiałem znaleźć metodę tworzenia kopii zapasowych wszystkich plików na wypadek awarii (lub przypadkowego usunięcia ważnych plików przez pracownika).

Chociaż Microsoft oferuje opcję przywracania plików przez krótki okres (zazwyczaj 30 dni), czasem może to być zbyt krótko – zanim zauważysz, że pliki zaginęły, może być już za późno. Lepiej mieć kopię zapasową (nawet starą wersję pliku) niż nie mieć żadnej kopii.

Nie wchodząc w kosztowne rozwiązania do tworzenia kopii zapasowych online ani nawet w inwestowanie w Microsoft 365 Backup (z modelem rozliczeń pay-as-you-go), postanowiłem zbudować niedrogi i stosunkowo tani system długoterminowych kopii zapasowych – i to mi się udało.

W tym celu użyłem Raspberry Pi z systemem Raspberry Pi OS (dawniej Raspbian OS). Początkowo używałem Pi 3, ale później przeniosłem się na Pi Zero W (obecnie Pi Zero 2 W), ponieważ Pi 3 był zbyt wydajny do tego zadania. Do przechowywania danych użyłem zewnętrznie podłączonego dysku twardego (dysku twardego 2,5 cala o pojemności 1 TB w obudowie USB 3.0) podłączonego za pomocą konwertera micro USB na USB. Do zasilania użyłem ładowarki do iPada 2A @ 5V z kablem USB na micro USB.

Po szybkiej wstępnej konfiguracji i uruchomieniu kilku poleceń, system backupu był gotowy do działania. Używam go z powodzeniem od połowy 2019 roku i teraz chciałbym się nim z Wami podzielić.

Ponieważ dostęp do WebDAV dla SharePoint w Microsoft 365 Business Standard został wycofany, odpowiednio zaktualizowałem poniższy przewodnik dla witryn SharePoint i ich bibliotek dokumentów. Zrewidowałem również metodę konfiguracji, aby uwzględnić zdalne konfigurowanie wszystkiego przez sieć.


Będziesz potrzebować:

  • Raspberry Pi z kartą microSD o pojemności minimum 8 GB (na system operacyjny);
  • Zewnętrzny dysk twardy lub pamięć USB podłączana przez USB (na pamięć zewnętrzną – pojemność zależy od Twoich potrzeb);
  • Ładowarki zapewniającej wystarczającą moc (szczególnie przy użyciu zewnętrznego dysku twardego);
  • Raspberry Pi OS (wcześniej znany jako Raspbian OS);
  • Raspberry Pi Imager (oficjalne oprogramowanie).

Raspberry OS

Aby zainstalować system Raspberry Pi OS na karcie SD, użyjemy dedykowanego oprogramowania o nazwie Raspberry Pi Imager.

Raspberry Pi Imager – main window

Wcześniej zalecałem pobranie obrazu Raspberry Pi OS i użycie balenaEtcher do jego wgrania na kartę SD. Jednak Raspberry Pi Imager ma teraz przewagę nad balenaEtcher, ponieważ pozwala wstępnie ustawić niektóre parametry, takie jak hasło, nazwa hosta i połączenie Wi-Fi. Oznacza to, że możesz wszystko zrobić zdalnie, bez konieczności podłączania ekranu, klawiatury i myszy do początkowej konfiguracji.

Przy pierwszym uruchomieniu należy wybrać swoje urządzenie Raspberry Pi (moje to Pi Zero 2 W) i wybrać system operacyjny.

Oto wskazówka — nie wybieraj 64-bitowego systemu operacyjnego. Nie wszystkie oprogramowanie jest jeszcze dostępne dla 64-bitów, zwłaszcza na lekkich urządzeniach, takich jak Pi Zero 2 W. Do uwierzytelniania Microsoftu użyjemy środowiska graficznego i lekkiej przeglądarki Midori, która jest dostępna tylko w wersji 32-bitowej. Chrome byłby przesadą i koszmarem wydajnościowym na takim urządzeniu.

W sekcji System operacyjny wybierz Raspberry Pi OS (32-bit). Alternatywnie, jeśli chcesz możliwie najlżejszą instalację (zalecane), przewiń w dół i wybierz Raspberry Pi OS (inne), a następnie Raspberry Pi OS Lite (32-bit).

Poniższe kroki będą oparte na Raspberry Pi OS Lite (32-bit).

Następnie wybierz nośnik danych. Podłącz kartę SD do komputera i wybierz ją.

Raspberry Pi Imager – with selections

Po dokonaniu wyboru kliknij przycisk Dalej. Na tym etapie zostaniesz zapytany, czy chcesz zastosować niestandardowe ustawienia. Zdecydowanie zalecam to zrobić i odpowiednio wszystko ustawić.

Raspberry Pi Imager – Would you like to apply OS customisation settings?

W zakładce Ogólne sugeruję ustawienie nazwy hosta, nazwy użytkownika i hasła oraz skonfigurowanie sieci bezprzewodowej LAN. Przewiń dalej, aby ustawić ustawienia regionalne.

W zakładce Usługi upewnij się, że włączono SSH, a następnie kliknij przycisk ZAPISZ.

Jak wspomniano wcześniej, będziemy potrzebować środowiska graficznego na naszym Raspberry Pi i przeglądarki Midori do konfiguracji, ale nie potrzebujemy, aby działały domyślnie. Wszystkie niezbędne kroki omówimy później.

Początkowa konfiguracja

Zgodnie z wcześniej zdefiniowanymi ustawieniami połączenia Wi-Fi, po uruchomieniu naszego urządzenia musimy się do niego podłączyć przez SSH.

ssh pi@192.168.1.188 -p 22

Twój adres IP zostanie przypisany przez router, chyba że ustawiłeś statyczny adres IP na podstawie adresu MAC urządzenia.

Gdy już się połączymy, zaktualizujmy naszą listę pakietów oprogramowania.

sudo apt update

FTP (opcjonalnie)

Możemy potrzebować dostępu do naszego urządzenia przez protokół FTP, aby łatwo przesyłać lub pobierać pliki. Poniższe polecenie zainstaluje serwer FTP na Twoim Raspberry Pi.

sudo apt install vsftpd

Po zainstalowaniu wystarczy zmienić jedno ustawienie w usłudze vsftpd, aby włączyć dostęp do zapisu przez ten protokół.

Edytujmy plik vsftpd.conf.

sudo nano /etc/vsftpd.conf

Odkomentuj (usuń znak # z) wiersza write_enable=YES.

Następnie wyjdź i zapisz plik, a następnie uruchom ponownie usługę FTP.

 /etc/init.d/vsftpd restart

Środowisko graficzne

Zainstalujmy środowisko graficzne, ponieważ na późniejszym etapie będziemy musieli uruchomić przeglądarkę internetową, aby uwierzytelnić się w usługach Microsoftu.

sudo apt install raspberrypi-ui-mods

Lekka przeglądarka

Zaraz po tym zainstalujmy Midori, lekką przeglądarkę internetową.

sudo apt install midori

Pulpit zdalny

Aby móc połączyć się z naszym pulpitem zdalnym za pomocą RealVNC, musimy najpierw zainstalować serwer.

sudo apt install realvnc-vnc-server

Gdy to zostanie zrobione, będziemy musieli również zainstalować RealVNC Viewer na naszym komputerze.

Aby uruchomić wirtualny pulpit i połączyć się z nim za pomocą przeglądarki, musimy wykonać następujące polecenie:

vncserver-virtual

Domyślnie nasz pulpit będzie działał jako :1.

Gdy już będzie działał, będziemy mogli połączyć się z nim przez RealVNC Viewer, łącząc się z 192.168.1.188:1.

Aby wyłączyć pulpit zdalny, możemy użyć poniższego polecenia.

vncserver-virtual -kill :1

Jeśli wolisz połączenie zdalne przez protokół RDP, możesz to zrobić, instalując xrdp.

sudo apt install xrdp

Następnie możesz po prostu użyć wbudowanej aplikacji Pulpit zdalny w systemie Windows lub pobrać aplikację Windows, jeśli używasz systemu macOS.

Rclone

Do celów tworzenia kopii zapasowych użyjemy pakietu o nazwie rclone.

Aby go zainstalować, użyj następującego polecenia:

sudo apt install rclone

Screen

Aby kopia zapasowa mogła działać po odłączeniu się od terminala, warto uruchomić ją wewnątrz screen. Musimy dodać tę funkcjonalność, instalując pakiet.

sudo apt install screen

Teraz jesteśmy gotowi do konfiguracji naszej pamięci masowej.

Pamięć masowa

Zacznijmy od sformatowania naszego dysku na exfat przed podłączeniem go do Raspberry Pi.

Jeśli chcesz to zrobić na Raspberry Pi, polecam użycie GParted — łatwego, graficznego narzędzia do partycjonowania.

Zainstalujmy je, jak pokazano poniżej, a następnie uruchommy wirtualny pulpit zdalny i sformatujmy dysk za pomocą interfejsu graficznego.

sudo apt install gparted

GParted nie jest w stanie natywnie tworzyć partycji exfat, więc będziemy musieli zainstalować dodatkowe narzędzia.

sudo apt install exfat-utils exfat-fuse

Na wirtualnym pulpicie przejdź do Menu Pi > Narzędzia systemowe > GParted.

W GParted wybierz swój dysk twardy z rozwijanego menu w prawym górnym rogu. Zazwyczaj będzie to /dev/sda.

Jeśli na dysku twardym nie ma partycji, utworzymy ją.

Jeśli istnieją jakieś partycje, usuń je i zacznij od nowa.

Utwórz partycję sformatowaną jako exfat, ponieważ umożliwi to szybkie podłączenie jej do komputera z systemem Windows lub macOS i efektywną pracę na zapisanych plikach.

GParted - New partition

GParted - partition unformatted

W GParted utwórz partycję niesformatowaną (spowoduje to utworzenie /dev/sda1), a następnie sformatuj ją na exfat z poziomu terminala.

sudo mkfs.exfat /dev/sda1

Montowanie dysku twardego

Ponieważ używam wersji Lite Raspberry Pi OS, środowisko graficzne nie jest uruchamiane przy starcie, więc dyski nie są automatycznie montowane i dostępne po podłączeniu. Aby zamontować dysk, użyjemy poniższego polecenia, które ustawi domyślne uprawnienia zapisu dla użytkownika pi. Jest to ważne, ponieważ oznacza, że nie będziemy musieli cały czas uruchamiać kolejnych poleceń z sudo.

Przed montowaniem stwórzmy punkt montowania. Ja stworzyłem swój w /media/pi/O365, więc muszę utworzyć odpowiednie puste foldery w tym celu.

sudo mkdir /media/pi
sudo mkdir /media/pi/O365

Następnie, po prostu zamontuj dysk za pomocą poniższego polecenia.

sudo mount -t exfat -o uid=1000,gid=1000 /dev/sda1 /media/pi/O365/

Potwierdź, że jest widoczny, używając polecenia df.

Narzędzie do usypiania dysku twardego (opcjonalnie)

W zależności od typu dysku twardego, którego używamy do tworzenia kopii zapasowej, warto rozważyć zapobieganie jego usypianiu w trakcie tworzenia kopii zapasowej.

Zainstalujmy pakiet hd-idle.

sudo apt install hd-idle

Gdy nasza pamięć masowa jest podłączona i zamontowana, możemy wykonać poniższe polecenie, aby ustawić czas usypiania na zero.

hd-idle -i 0 -a sda

Teraz Twój dysk jest gotowy do użycia.

Konfiguracja Rclone

Nadszedł czas, aby skonfigurować naszą kopię zapasową za pomocą Rclone.

Na tym etapie będziemy używać terminala (zdalnego lub przez wirtualny pulpit) oraz przeglądarki internetowej (Midori) na pulpicie zdalnym.

Jeśli jeszcze tego nie zrobiłeś, uruchom wirtualny pulpit za pomocą vncserver-virtual i połącz się z nim za pomocą RealVNC Viewer.

rclone config

Z menu utwórz nowe zdalne połączenie, naciskając n.

Nazwijmy je o365onedrive (dla osobistego OneDrive), a później utwórzmy kolejne o nazwie o365sharepoint (dla biblioteki dokumentów SharePoint).

W następnym kroku musimy zdecydować, której usługi użyć.

Dla Microsoftu wybierz Microsoft OneDrive. Jest to opcja do tworzenia kopii zapasowych zarówno folderu OneDrive użytkownika, jak i biblioteki dokumentów SharePoint. Ta konfiguracja będzie wymagać tokenu uwierzytelniającego (nie hasła), dlatego będziemy musieli to zrobić za pośrednictwem Midori.

OneDrive Osobisty

Wybierz Typ pamięci masowej do konfiguracji z listy, podając numer lub wpisując onedrive.

Nie musimy nic wpisywać dla client_id i client_secret (wystarczy nacisnąć Enter, aby zaakceptować domyślne).

Dla Wybierz region chmury narodowej dla OneDrive, pozostawiam domyślny (globalny) wybór.

Gdy zostaniesz zapytany Edytować zaawansowaną konfigurację?, odpowiedz n na Nie lub po prostu naciśnij Enter.

Gdy zostaniesz zapytany Użyć auto konfiguracji?, odpowiedz Tak lub po prostu naciśnij Enter.

Na tym etapie zostanie nam przedstawiony lokalny adres URL, taki jak http://127.0.0.1:53682/auth?state=6W7rX_yb67gWJfySzz_WkA, wraz z komunikatem Zaloguj się i autoryzuj rclone do dostępu oraz Oczekiwanie na kod….

Skopiuj ten link i otwórz go w Midori.

Tam będziesz musiał zalogować się na swoje konto Microsoft 365, postępując zgodnie z instrukcjami na ekranie.

Kiedy wszystko pójdzie dobrze, zobaczysz prostą stronę z komunikatem Sukces! Wszystko zrobione. Proszę wrócić do rclone. w Midori, a w terminalu otrzymasz potwierdzenie (Otrzymano kod), że kod został odebrany.

Na tym etapie możesz zamknąć przeglądarkę internetową i wrócić do terminala.

Z końcowych opcji musisz wybrać typ konta.

Wybierz 1 dla OneDrive Osobisty lub Biznesowy.

Możesz tu również zobaczyć wymieniony SharePoint, ale o tym później.

W ostatnim kroku (Wybierz dysk, którego chcesz użyć) potwierdź, którego dysku użyć, wybierając OneDrive (firmowy).

Ostatni krok:

Drive OK?

Found drive "root" of type "business"
URL: https://contoso.sharepoint.com/personal/dariusz_contoso_com/Documents

Po prostu potwierdzamy t na Tak (lub po prostu naciskamy Enter) i jeszcze raz t na Tak, aby potwierdzić, że wszystko jest w porządku i konfiguracja zostanie zapisana.


Opuśćmy teraz konfigurację rclone (naciśnij q) i sprawdźmy, czy widzimy foldery w naszej konfiguracji.

W terminalu wpisz:

rclone lsd o365personal:

To powinno wyświetlić listę katalogów na Twoim osobistym koncie OneDrive. Jeśli wszystko pójdzie dobrze, konfiguracja jest gotowa.


Biblioteka dokumentów SharePoint

W przeszłości dostęp do Biblioteki dokumentów SharePoint odbywał się za pomocą protokołu webdav, ale ta metoda nie jest już używana. Microsoft odszedł od dostępu opartego na WebDAV na rzecz synchronizacji OneDrive i nowoczesnej integracji z SharePoint.

rclone config

Utwórz nową konfigurację – n.

Nazwijmy ją o365sharepoint (dla biblioteki dokumentów SharePoint).

Dla Typu pamięci masowej do konfiguracji wybierz opcję z listy lub wpisz onedrive.

Pozostaw client_id i client_secret puste.

Wybierz opcję swojego regionu (domyślna globalna).

Odpowiedz Nie na zaawansowaną konfigurację i Tak na automatyczną konfigurację.

Przejdź pod nowy link http://127.0.0.1... w przeglądarce Midori i zaloguj się na swoje konto, aż otrzymasz komunikat Sukces! Wszystko gotowe. Wróć do rclone.

Z opcji Typ połączenia wybierz tę związaną z nazwą witryny SharePoint lub adresem URL, np. mysite lub https://contoso.sharepoint.com/sites/mysite (URL).

W następnym kroku wklej link do swojej witryny SharePoint (nie do folderu Udostępnionego katalogu ani żadnego innego, ale bezpośrednio do utworzonej witryny SharePoint, gdzie znajdują się foldery), na przykład https://contoso.sharepoint.com/sites/mysite.

W kolejnym kroku będziesz musiał Wybierz dysk, którego chcesz użyć.

Zazwyczaj będzie to jedna z pierwszych opcji związanych z Dokumentami (biblioteką dokumentów). Jeśli masz więcej niż jedną bibliotekę dokumentów, będziesz musiał utworzyć oddzielną konfigurację dla każdego folderu biblioteki dokumentów.

Ostatni krok:

Drive OK?

Found drive "root" of type "documentLibrary"
URL: https://contoso.sharepoint.com/sites/mysite/Shared%20Documents

Po prostu potwierdzamy t na Tak (lub po prostu naciskamy Enter) i jeszcze raz t na Tak, aby potwierdzić, że wszystko jest w porządku i konfiguracja zostanie zapisana.


Opuśćmy teraz konfigurację rclone (naciśnij q) i sprawdźmy, czy możemy wyświetlić foldery w naszej konfiguracji SharePoint.

W terminalu wpisz:

rclone lsd o365sharepoint:

To powinno wyświetlić listę katalogów w Twojej Bibliotece Dokumentów SharePoint. Jeśli wszystko pójdzie dobrze, konfiguracja jest gotowa.


Nie będziemy już potrzebować wirtualnego pulpitu, więc możemy go zamknąć, wykonując polecenie vncserver-virtual -kill :1.

Kroki przed wykonaniem kopii zapasowej

Teraz nadszedł czas, aby wykonać polecenia, które rozpoczną proces tworzenia kopii zapasowej.

Nie musimy tego robić na pulpicie Raspberry Pi OS; możemy uruchomić je przez SSH.

Przejdźmy na nasz zamontowany dysk twardy pod /media/pi/O365 i utwórzmy tam dwa foldery, po jednym dla każdej konfiguracji w rclone.

mkdir OneDrive
mkdir SharePoint

Teraz jesteśmy gotowi.

Kopia zapasowa

Uruchom polecenie screen i wykonaj w nim poniższe komendy, dzięki czemu będziesz mógł zamknąć terminal i rozłączyć się bez przerywania procesu tworzenia kopii zapasowej. Aby wrócić do sesji, zaloguj się przez SSH i przywołaj sesję za pomocą screen -R. Jeśli masz uruchomionych więcej niż jedną sesję (więcej na ten temat na końcu), zostanie Ci przedstawiona lista sesji i będziesz musiał przywołać konkretną, używając jej numeru, na przykład screen -R 693.

Kopia zapasowa – OneDrive

Oto moje polecenie do utworzenia kopii zapasowej mojego osobistego OneDrive’a o365personal na dysku zapasowym.

rclone copy --progress --update o365personal: /media/pi/O365/OneDrive --log-file=/media/pi/O365/OneDrive.log --log-level ERROR

To polecenie rozpocznie kopiowanie naszych plików z OneDrive na nasz dysk twardy.

Jak widać, polecenie nie tylko pokaże --progress, ale także zarejestruje w --log-file wszelkie błędy napotkane podczas dostępu do plików. Opcja --update służy do aktualizowania zmienionych plików, a nie do pobierania i nadpisywania ich, nawet jeśli są dokładnie takie same. Jest to bardzo przydatne, jeśli wykonujemy progresywną kopię zapasową do tego samego folderu co poprzednio.

Po udanym wykonaniu polecenia zawsze warto sprawdzić logi.

Kopia zapasowa – SharePoint

Następujące polecenie skopiuje nasz folder „Wspólne dokumenty” na naszej witrynie SharePoint.

rclone copy --progress --update o365sharepoint: /media/pi/O365/SharePoint --log-file=/media/pi/O365/Documents.log --log-level ERROR

W ten sposób mamy świetny system tworzenia kopii zapasowych naszych plików w chmurze Microsoft 365 (OneDrive i SharePoint).

Wyłączając koszt konfiguracji — Raspberry Pi i zewnętrzne dyski twarde (oraz prąd) — nie ma żadnych opłat abonamentowych, a my zachowujemy pełną kontrolę nad naszymi plikami.

Tworzenie kopii zapasowej nie jest szybkie i może zająć kilka godzin w przypadku witryn SharePoint o rozmiarze powyżej 100 GB.

Używam tego systemu od lat i użyłem go co najmniej dwa razy w tym czasie, aby przywrócić kilka kluczowych plików.

Rozwiązywanie problemów z siecią Raspberry Pi

Na moim Raspberry Pi doświadczyłem problemu z Wi-Fi, który od czasu do czasu nagle zrywał połączenie z routerem, zwłaszcza gdy zadania na urządzeniu zostały zakończone i nie było aktywności sieciowej. Zawieszał się również przy intensywnym wykorzystaniu sieci Wi-Fi. Naprawiłem to na dwa sposoby.

Zarządzanie energią WLAN

Tuż przed uruchomieniem kopii zapasowej, wykonuję poniższe polecenia, aby wyłączyć wszelkie funkcje oszczędzania energii związane z bezprzewodową siecią LAN na moim urządzeniu.

sudo iwconfig wlan0 power off
sudo iw wlan0 set power_save off

Sztuczna aktywność sieciowa

Równolegle z screen uruchamiającym moje polecenie kopii zapasowej, uruchamiam dodatkowy screen, gdzie po prostu wykonuję polecenie:

ping 1.1.1.1

Ta prosta rzecz pomogła utrzymać aktywność sieciową i zapobiegła zawieszaniu się Raspberry Pi podczas procedury tworzenia kopii zapasowej, która czasami może trwać wiele godzin.


I to wszystko.

Pozdrawiam

Udostępnij na Threads
Udostępnij na Bluesky
Udostępnij na Linkedin
Udostępnij przez WhatsApp
Udostępnij przez Email

Komentarze i Reakcje

Kategorie