Migracja plików do Sharepoint Online

Maciej Ochal, 27 stycznia 2017

Wraz z rozwojem usług Office365 pojawiła się konieczność przekazywania co raz większej ilości plików i chęć klientów pozbycia się lokalnych serwerów je udostępniających. W tej chwili jest już możliwe przeniesienie firmowych danych do chmury i wygodnego korzystania z nich online.

Jednym z problemów, który był przeszkodą do przejścia z lokalnych zasobów na korzystanie z nich w Office 365, stanowiła pojemość przestrzeni dyskowej przyznawanej na start – niewielka i uzależniona od ilości użytkowników. Resztę potrzebnego miejsca należało dokupić jako oddzielna subskrypcja. Obecnie jest to 1TB na organizację, co pozwala zamieścić już sporo plików.

W poniższym artykule przedstawię dwa sposoby, jakie firma Microsoft na dzień dzisiejszy udostępnia administratorom chcącym przenieść dane do Sharepoint Online z wykorzystaniem Internetu. Trzecia opcja zakłada wysłanie zaszyfrowanych dysków do centrum danych i nie będę jej tu opisywał. Mimo, że wszystkie metody są na podanych na końcu artykułu stronach źródłowych, użycie opisywanych tam instrukcji jest niejasne. Postaram się je tutaj przybliżyć i wyjaśnić. Informacje zostały zweryfikowane podczas codziennej pracy.

Poza tym na rynku istnieje wiele płatnych aplikacji, które potrafią zautomatyzować te procesy, zmigrować dane do Sharepoint Online i przedstawić cały proces w interfejsie graficznym. Mają nad przedstawianymi tu metodami zasadniczą przewagę: potrafią bowiem przenieść uprawnienia.

Uprawnienia

Jeżeli mamy zamiar odwzorować rozbudowane drzewo plików wraz z uprawnieniami, za płatnym rozwiązaniem tego transferu należy się rozejrzeć od razu. Każda z aplikacji firm trzecich, jakie miałem okazję przetestować – a jest ich sporo – umożliwia instalację wersji próbnej. Część z nich radzi sobie również z uprawnieniami plików, a nawet dołącza metadane w celu łatwiejszego wyszukiwania potrzebnych informacji. Użycie sposobów przedstawionych w tym artykule nie pozwoli na przeniesienie części security – czyli list z uprawnieniami dostępu do poszczególnych plików i folderów.

Założenia i wymagania

By użyć przedstawionych dalej opisów, hierarchia (kolekcje, strony, foldery) Sharepoint Online powinna zostać już wcześniej utworzona oraz musimy mieć do niej dostęp administracyjny. Jest to wymóg konieczny by kontynuować pracę. W przypadku korzystania do celów migracyjnych z aplikacji, należy zapoznać się z jej dokumentacją. Część z nich pozwala również na automatyczne tworzenie struktury Sharepoint.

Wymagana jest instalacja SharePoint Online Management Shell w obu przypadkach oraz dodatkowo Azure AzCopy jeżeli wykorzystywać będziemy funkcję Import PST.

Plan migracji

Jak każde działanie, również migrację plików należy odpowiednio zaplanować. W przypadku dużej ich ilości może okazać się, że trzeba ją będzie podzielić na etapy. Również wybór metody, którą obierzemy jest zależny od wielkości danych. Powyżej 100 GB firma Microsoft zaleca użycie metody drugiej w tym artykule, czyli skryptu Powershell z wykorzystaniem importu równoległego.

Dodatkowo trzeba pamiętać o tym, że z plików korzystają użytkownicy. Należy im z jednej strony zapewnić dostęp do potrzebnych informacji, a z drugiej – zadbać o to, by przenoszone dane były aktualne i niezdublowane.

W przypadku dużej ilości danych, dobrze jest podzielić pracę na etapy, w których będzie można odciąć dostęp do konkretnych udziałów, które będą przeniesione w całości już do nowego miejsca. Zapobiegnie to gubieniu plików i szukaniu najnowszych ich wersji.

Sposoby migracji za pomocą narzędzi Microsoft:

  • Import PST+Powershell+AzCopy
  • Skrypt Powershell z użyciem komendy Invoke-SPOMigrationEncryptUploadSubmit

I. Import PST

Pierwszy sposób wykorzystuje usługę Import PST, pierwotnie stworzoną do migracji poczty. Szybko jednak okazało się, że pliki tego formatu nadają się do przenoszenia wszelkich danych. Microsoft wykorzystał je więc również jako nośnik danych Sharepoint. Są także używane w centrum eDiscovery do pobierania zawartości zwróconej przez silnik wyszukiwarki.

Mimo, że funkcja importu jest dostępna poprzez panel administracyjny „Zabezpieczenia i prywatność”, przygotowanie paczek plików wymaga użycia Powershell i linii poleceń (cmd).

1. Logowanie do usługi Import PST

Do panelu importu dostaniemy się przez panel zabezpieczeń, lub też z użyciem bezpośredniego linku:

https://portal.office.com/EAdmin/Compliance/Ingestion.aspx

Należy wybrać opcję ładowania plików Sharepoint Online lub OneDrive:

https://portal.office.com/EAdmin/Compliance/Ingestion.aspx

migracja1

Następnie wybieramy opcję utworzenia kontenera w obrębie usługi Azure, do którego będą kopiowane dane. Nie jest potrzebne posiadanie jej aktywnej, przestrzeń zostanie przydzielona automatycznie.

Wybieramy „Utwórz adresy URL i nazwy kontenerów”

migracja2

Po chwili czekania na utworzenie miejsca do importu, pojawią się dane, które kopiujemy do notatnika – będą one potrzebne w kolejnych krokach.

migracja3
migracja4

2. Przygotowania paczek importu

Mając już skopiowane dane kontenerów Azure, można przejść do przygotowywania paczek plików do wysyłki. W tym celu uruchamiamy sesję Powershell dla Sharepoint Online, który wcześniej musiał już zostać zainstalowany.

Jeżeli jeszcze nie jest, teraz już trzeba to zrobić:

migracja5

Uruchamiamy Sharepoint Online Management Shell i wprowadzamy administracyjne poświadczenia do Sharepoint Online w naszej dzierżawie Office365:

$credentials = Get-Credential

migracja6

W okienku podajemy dane administratora głównej kolekcji Sharepoint Online:

https://NAZWADZIERŻAWYOFFICE365-admin.sharepoint.com

Logujemy się do niej poprzez komendę:

Connect-SPOService -Url „https://NAZWADZIERŻAWYOFFICE365-admin.sharepoint.com” -Credential $credentials

Poprawność połączenia można sprawdzić komendą, która wylistuje dostępne kolekcje Sharepoint w naszej dzierżawie Office365:

Get-SPOSite

Przykładowy wynik jej działania:

migracja7

Skoro połączenie jest poprawne, a nasz użytkownik (w tym przypadku admin@testowo.com.pl) wylistowany jako właściciel danej kolekcji, do której chcemy importować dane, przygotowujemy paczki importowanych plików za pomocą komendy:

New-SPOMigrationPackage -SourceFilesPath C:\Users\testowo\Desktop\test  -OutputPackagePath c:\spopsttest2 -TargetWebUrl „https://testowoonline.sharepoint.com/sites/dokumenty” -TargetDocumentLibraryPath „Documents” -IgnoreHidden -ReplaceInvalidCharacters

Poszczególne przełączniki oznaczają:

  • SourceFilesPath – podajemy ścieżkę do plików, które chcemy skopiować do Sharepoint Online,
  • OutputPackagePath – podajemy adres do katalogu pośredniego, w którym znajdzie się przygotowana paczka,
  • TargetWebUrl – adres Url docelowej, głównej strony biblioteki, do której będą importowane dane. Jeżeli nie jesteśmy pewni, jak powinien wyglądać, można zalogować się do niej przez przeglądarkę i wybrać opcję „Otwórz w Eksploratorze”:
migracja8
  • TargetDocumentLibraryPath – domyślnie documents, może być także Shared Documents
  • IgnoreHidden – pozwala ominąć problem z ukrytymi plikami,
  • ReplaceInvalidCharacters – zamienia niedozwolone znaki,

-TargetDocumentLibrarySubFolderPath – można również dodać parametr subfolderu biblioteki, jeżeli nie znajduje się ona w głównym folderze podanym w TargetDocumentLibraryPath

Po wykonaniu komendy, w folderze podanym przy przełączniku -OutputPackagePath, pojawią się dane naszej paczki:

migracja9

W dokumencie tekstowym nazwanym CreateMigrationPackage… możemy prześledzić proces powstawania paczki.

3. Konwersja paczki importu

Kolejnym krokiem jest konwersja do formatu możliwego do zaimportowania do konkretnej kolekcji Sharepoint Online przy użyciu:

ConvertTo-SPOMigrationTargetedPackage -SourceFilesPath C:\Users\mochal\Desktop\test -SourcePackagePath c:\spopsttest2 -OutputPackagePath c:\spopsttestazure2 -TargetWebUrl „https://testowoonline.sharepoint.com/sites/dokumenty” -TargetDocumentLibraryPath „documents” -Credentials $credentials

Większość z parametrów, jakie trzeba podać jest taka sama jak przy poprzedniej komendzie:

  • SourceFilesPath – podajemy ścieżkę do plików, które chcemy skopiować do Sharepoint Online,
  • OutputPackagePath – podajemy adres do katalogu docelowego, w którym znajdzie się przygotowana do importu paczka,
  • TargetWebUrl – adres Url docelowej, głównej strony biblioteki, do której będą importowane dane,

-TargetDocumentLibrarySubFolderPath – można również dodać parametr subfolderu biblioteki, jeżeli nie znajduje się ona w głównym folderze podanym w TargetDocumentLibraryPath

Efektem działania komendy będzie utworzenie w podanej w prarametrze OutputPackagePath lokalizacji plików txt i xml:

migracja10

Podobnie jak w przypadku poprzedniej komendy, w plikach tekstowych ConvertMigrationPackage… można prześledzić proces powstawania paczki, a w razie pojawienia się błędów, będą również informacje o nich.

4. Import paczki do Azure

Aby możliwy był import do usługi ImportPST, należy zainstalować aplikację AzCopy:

http://aka.ms/downloadazcopy

Uruchamiamy linię poleceń (cmd), używając polecenia cd przechodzimy do folderu, w którym został zainstalowany AzCopy i uruchamiamy komendę kopiowania, stosując adresy kontenerów zebranych podczas wizyty na stronie usługi Import PST:

AzCopy.exe/Source:c:\spotestazure2 /Dest:https://……./V:ścieżkadofolderulogów /s

Poszczególne przełączniki komendy oznaczają odpowiednio:

/Source: ścieżka do folderu ze skonwertowaną zawartością (gotową do wysłania paczką)

/Dest: adres SAS URL kontenera manifestów Azure – bardzo ważne by nie pomylić go z adresem SAS URL

migracja11

/V: adres logu – opcjonalnie – logowanie operacji – jeżeli przełącznika użyjemy, a ścieżki do folderu nie podamy, będzie to katalog %LocalAppData%\Microsoft\Azure\AzCopy. Warto jednak korzystać z tego pliku, gdyż można prześledzić ewentualne błędy,

/s: – użycie spowoduje kopiowanie również podfolderów – w innym przypadku skopiowany zostanie tylko katalog główny, określony w opcji /Source.

migracja12

5. Sprawdzenie poprawności kopiowania plików w Azure

Po skopiowaniu plików, można sprawdzić, czy pojawiły się we wskazanym miejscu. W tym celu trzeba zainstalować kolejną aplikację: Azure Storage Explorer, dostępną pod adresem:

http://storageexplorer.com/

Po uruchomieniu aplikacji, dodajemy konto Azure, przy użyciu adresu SAS URL:

migracja13
migracja14

I natychmiast możemy podejrzeć, co udało nam się skopiować w poprzednim kroku:

migracja15

6. Przygotowanie pliku mapowania

Pozostał ostatni etap, czyli import danych z Azure do Sharepoint Online z użyciem pliku mapowania, który należy przygotować. Zawiera on adresy plików i manifestów Azure oraz adres docelowej biblioteki i wygląda tak:

migracja16

Plik musi zawierać tylko jeden wiersz danych, w którym będą zawarte:

Workload – podajemy Sharepoint,

SPFileContainer – podajemy dane zebrane na początku jako nazwa kontenera plików Azure:

migracja17

SPManifestContainer – podajemy dane zebrane na początku jako nazwa kontenera manifestów Azure:

migracja18

SPSiteUrl – adres docelowej biblioteki Sharepoint Online, do której będą kopiowane dane.

7. Import plików do usługi Import PST

Posiadając już gotowy plik mapowania oraz dane zaimportowane do Azure, przechodzimy do menu przekazywania danych, które otworzyliśmy na początku tego procesu, czyli do okienka „Przekaż pliki przez sieć”:

migracja19

Zaznaczamy opcje 4 i 5 i klikamy „Dalej”.

W kolejnym kroku wskazujemy plik .csv mapowania i wybieramy „Zweryfikuj”

migracja20

Po pomyślnej weryfikacji zaznaczmy zgodę na warunki usługi i klikamy „Zakończ”.

migracja21

Od tej chwili proces importu plików możemy śledzić w oknie usługi Import PST:

migracja22

Chcąc zapoznać się ze szczegółami operacji, możemy wybrać opcję „Wyświetl szczegóły”

W oknie stanu dostępne są szczegółowe raporty dotyczące błędów i przebiegu operacji importu, które można pobrać jako pliki tekstowe. Po pomyślnym imporcie pojawi się informacja o ilości skopiowanych plików, a status operacji w kolumnie „Stan” zmieni się na „Sukces”.

migracja23

Jeżeli pojawiłyby się jakieś problemy i pliki nie zostałyby zaimportowane, ich ilość pojawi się w kolumnach tabeli pliki jako elementy pominięte. W celu sprawdzenia szczegółów, można użyć raportów dostępnych z prawej strony okna w menu „Dodatkowe informacje”.

Jak to wygląda od strony Sharepoint Online, dowiemy się logując do strony z biblioteką, która powinna zostać już wzbogacona o nowe pliki.

II. Import plików przy użyciu samego powershell

Alternatywą do wykorzystania usługi ImportPST jest użycie tylko konsoli powershell i polecenia Invoke-SPOMigrationEncryptUploadSubmit. Z zalet tej metody należy wymienić szyfrowanie przesyłanych plików oraz możliwość pracy równoległej, dla przekazywania wielu plików jednocześnie.

Wyeliminowany jest też krok pośredni przenoszenia plików do Azure z użyciem polecenia AzCopy.

Jako wadę uznać należy brak podglądu procesu w oknie przeglądarki – raport można uzyskać za pomocą powershell – oraz konieczność oczekiwania na zakończenie procesu – do tego czasu komputer, które wykonuje operację nie może zostać wyłączony, ani odłączony od sieci.

Proces przebiega następująco:

  1. Stworzenie paczki plików do migracji

Pierwszy krok, to stworzenie paczki migracji, przy użyciu komendy New-SPOMigrationPackage i jest identyczny jak w metodzie Import PST (patrz pkt. I.2). Komendą którą uruchamiamy, będzie więc:

New-SPOMigrationPackage -SourceFilesPath C:\Users\testowo\Desktop\test  -OutputPackagePath c:\spopsttest2 -TargetWebUrl „https://testowoonline.sharepoint.com/sites/dokumenty” -TargetDocumentLibraryPath „Documents” -IgnoreHidden -ReplaceInvalidCharacters

  1. Konwersja paczki

Proces konwersji jest w zasadzie zbliżony do metody Import PST (patrz pkt I.3). Jeżeli jednak chcemy użyć funkcjonalności pracy równoległej (wielozadaniowej), to trzeba go przeprowadzić inaczej, z użyciem przełącznika ParralelImport i zmiennych.

Przykładowe komenda konwersji do paczki importu równoległego wygląda następująco:

$ParallelPackages= ConvertTo-SPOMigrationTargetedPackage -ParallelImport -SourceFilesPath C:\Users\testowo\Desktop\test -SourcePackagePath  c:\spopsttest2 -OutputPackagePath c:\importready -Credentials $credentials -TargetWebUrl „https://testowoonline.sharepoint.com/sites/dokumenty „ -TargetDocumentLibraryPath „Shared Documents”

Przy czym:

  •  jako ścieżkę przełącznika SourceFilesPath podajemy te same dane, co w pkt.2, dla komendy New-SPOMigrationPackage,
  • SourcePackagePath, to ścieżka paczki podana jako OutputPackagePath w pkt.2, dla New-SPOMigrationPackage
  •  jako OutputPackagePath podajemy ścieżkę do nowego folderu.

Po wykonaniu komendy, w folderze podanym w przełączniku OutputPackagePath dane zostaną podzielone na osobne paczki, ich ilość zależy od rozmiaru danych do kopiowania (na zrzucie ekranu widoczne jako foldery 1,2,3,4):

migracja24

3. Import danych do Sharepoint Online z użyciem polecenia Invoke-SPOMigrationEncryptUploadSubmit

Skonwertowane dane importujemy poniższą komendą:

$jobs= $ParallelPackages | % {Invoke-SPOMigrationEncryptUploadSubmit -SourceFilesPath $_.FilesDirectory.FullName -SourcePackagePath $_.PackageDirectory.FullName -Credentials $credentials -TargetWebUrl „https://testowoonline.sharepoint.com/sites/dokumenty/”}

Po jej wykonaniu sesja powershell zostanie zablokowana na czas eksportu plików do Azure, a na górze ekranu pojawi się informacja o przesyłaniu plików:

migracja25

Po ich eksporcie nie otrzymamy żadnej informacji o dalszym przebiegu procesu.

4. Sprawdzenie statusu importu plików po użyciu komendy Invoke-SPOMigrationEncryptUploadSubmit

Aby sprawdzić jaki jest status naszego importu, należy użyć kolejnej komendy Powershell. Jest nią Get-SPOMigrationJobProgress. Oto składnia, jakiej należy użyć w przypadku importu równoległego (wielu zadań jednocześnie):

$jobs|%{Get-SPOMigrationJobProgress -TargetWebUrl „https://testowoonline.sharepoint.com/sites/dokumenty ”  -Credentials

$credentials -JobIds $_.jobid.guid -AzureQueueUri $_.reportingqueueuri.absoluteuri -EncryptionParameters $_.encryption}

W składni komendy podajemy tylko dane w przełączniku TargetWebUrl, a reszta jest pobrana ze zmiennej zdefiniowanej w poprzednim kroku. Po wykonaniu komendy, na górze ekranu sesji powershell, pojawi się informacja o stanie operacji:

migracja26

Po zakończeniu działania procesu, pliki będą już znajdowały się w Sharepoint Online.

Podsumowanie

W artykule przybliżyłem dwie metody importu plików z lokalnych serwerów do usługi Sharepoint Online – Import PST oraz za pomocą komend powershell. Obie mają swoje wady i zalety, przy czym metoda druga wydaje się być bezpieczniejsza i mniej skomplikowana.

Autor: Maciej Ochal, Team Leader Support Online Sp. z o.o. Źródła:

  • własne doświadczenia z usługą Sharepoint Online i Office365

https://docs.microsoft.com/pl-pl/azure/storage/storage-use-azcopy

https://support.office.com/en-us/article/Upload-on-premises-content-to-SharePoint-Online-555049c6-15ef-45a6-9a1f-a1ef673b867c

https://support.office.com/pl-pl/article/Przekazywanie-zawarto%C5%9Bci-lokalnej-do-us%C5%82ugi-SharePoint-Online-555049c6-15ef-45a6-9a1f-a1ef673b867c?ui=pl-PL&rs=pl-PL&ad=PL&fromAR=1

https://support.office.com/pl-pl/article/Use-network-upload-to-import-SharePoint-data-to-Office-365-ed4a43b7-c4e3-45c8-94c8-998153407b8a#step2networkupload

https://technet.microsoft.com/library/mt143608.aspx

https://blogs.office.com/2015/09/16/office-365-import-service-migration-to-sharepoint-online-and-onedrive-for-business-just-became-easier/

BLOG

Zobacz inne nasze artykuły

Zarządzanie firmą w czasie pandemii

Zarządzanie firmą w czasie pandemii

Witam, nazywam się Piotr Popławski, jestem Prezesem Zarządu Support Online, spółki zajmującej się outsourcingiem informatycznym. 80-cio osobowy zespół naszej firmy działa prężnie na rynku zarówno Polskim jak i międzynarodowym. Moim hobby jest żeglarstwo, jestem...

FindTime. Jak oszczędzić czas podczas planowania spotkań.

FindTime. Jak oszczędzić czas podczas planowania spotkań.

Za każdym razem, kiedy organizujesz spotkanie z wieloma osobami, stajesz przed wyzwaniem. Jak znaleźć dogodny termin, który pasuje wszystkim uczestnikom? Jeśli zainteresowani są zebrani w jednym miejscu i mają wgląd w swoje kalendarze, zadanie nie musi być trudne. W...