SharePoint Migration
Daten von Mac auf SharePoint umziehen
Für die SharePoint Migration, also dem Verschieben von Daten von einem, NAS (Network Attached Storage) aus dem Rechenzentrum, in die Cloud zu Microsoft 365 Sharepoint sind einige Vorbereitungen zu treffen. Um die Daten erfolgreich zu migrieren. Kommt man von einer Windows Infrastruktur lässt sich die Migration mit dem SharePoint-Migrationstool (SPMT) automatisieren. Auch werden sich hier einige Fehler erst gar nicht auftreten, da diese auf einem Microsoft Betriebssystem nicht vorkommen können. Unter Mac OS jedoch können einige Fehler bei Ordner- und Dateinamen lauern, die bei der Migration dann zu Fehlern im OneDrive führen. Hier nun vier Schritte um einige Fehler vor der Migration zu behandeln.
ACHTUNG: Es wird dringend empfohlen, für den Fall, dass etwas schief geht, eine Sicherheitskopie Ihrer Daten anzufertigen und an einer Kopie zu arbeiten.
Illegale Zeichen entfernen
Unter Mac OS können einige Zeichen in Ordner- und Dateinamen vorkommen, die unter Windows und SharePoint im speziellen nicht vorkommen dürfen. Zu den illegalen Zeichen bietet Microsoft auch eine Übersicht. Diese und noch einige Zeichen mehr könne mit dem folgenden Codeschnipsel entfernt werden.
find "/Volumes/NAS/Verzeichnis" -name '*[\/\:\+\{\;\“\\\=\?~\<\>\&\*\|\$]*' -exec bash -c 'x="{}"; y="$(sed " s/:/-/g; s/\+/-/g; s/{/_/g; s/\;/_/g; s/\"/_/g; s/\=/-/g; s/\?/_/g; s/~/-/g; s/\</_/g; s/\>/_/g; s/\&/und/g; s/\*/_/g; s/\|/__/g; s/\\/-/g;" <<< "$x")" && mv "$x" "$y" ' \;
Folgende Ersetzungen werden bei der Ausführung vorgenommen:
- „:“ wird zu „-„
- „+“ wird zu „-„
- „{“ wird zu „_“
- „;“ wird zu „_“
- „““ wird zu „_“
- „=“ wird zu „-„
- „?“ wird zu „_“
- „~“ wird zu „-„
- „<“ wird zu „_“
- „>“ wird zu „_“
- „&“ wird zu „und“
- „*“ wird zu „_“
- „|“ wird zu „__“
- „\“ wird zu „-„
In dem Statement oben ist nur der Pfad zu dem Verzeichnis anzupassen, das für die Migration vorbereitet werden soll. Vielleicht soll auch die eine oder andere Regel entfernt werden, die für andere Anwendungsfälle zu viel ist.
Um nur die Dateien herauszufinden, die Sonderzeichen enthalten und in eine Datei auszugeben kann der folgende Schnipsel verwendet werden. Das Ergebnis wird auf dem Schreibtisch des Users in der Datei „verbotene-zeichen.txt“ abgelegt.
find /Volumes/NAS/Verzeichnis -name '*[\/\:\+\{\;\“\\\=\?~\(\)\<\>\&\*\|\$]*' -ls > ~/Desktop/verbotene-zeichen.txt
Temporäre Dateien finden und löschen)
Nutzt man Dateisysteme, die nicht speziell auf MacOS ausgelegt sind, z. B. ExFat, wird bei der Verwendung von Dateien eine Kopie der Datei mit dem Namen ._Datei
angelegt. Diese lassen sich mit den folgenen Befehlen finden und löschen.
In den Dateien sind Informationen wie Tags oder Kommentare enthalten. Oftmals –genügt bereits das Kopieren von einer Partition mit dem Dateisystem Mac OS Extended zu einer Partition mit dem Dateisystem ExFat um diese Kopien anzulegen.
Löscht man diese Dateien, gehen die darin gespeicherten Informationen verloren. Wird die Datei erneut mit einem Dienstprogramm geöffnet, so werden die versteckten Kopien der Datei erneut angelegt.
Alle Dateien löschen die mit ._ Anfangen
find "/Volumes/NAS/Verzeichnis" -name "._*" -delete
Wer hier nur die betroffenen Verzeichnisse ausgeben möchte und nicht direkt alle Ordner löschen möchte kann folgenden Befehl absetzen:
find "/Volumes/NAS/Verzeichnis" -name "._*" -ls > ~/Desktop/temp_data_01.txt
Alle Dateien löschen die mit ~$ Anfangen
find "/Volumes/NAS/Verzeichnis" -name "\~\$*" -delete
Um nur die betroffenen Verzeichnisse auszugeben und nicht direkt alle Ordner zu löschen, kann folgenden Befehl abgesetzt werden:
ind "/Volumes/NAS/Verzeichnis" -name "\~\$*" -ls > ~/Desktop/temp_data_02.txt
Dateien mit trailing Whitespace finden und das Leerzeichen entfernen
Das sind Dateien und Ordner welche als letztes Zeichen des Namens ein Leerzeichen haben. Diese fallen in der Regel nicht auf, führen jedoch dazu dass OneDrive die Daten nicht verarbeiten will.
Zunächst einmal die entsprechenden Dateien finden und den Befehl für das umbenennen ausgeben:
find "/Volumes/NAS/Verzeichnis" -name '*[ \.]' -exec bash -c 'shopt -s extglob; echo mv -v "$1" "${1%%+( )}"' _ {} \;
Ist das Ergebnis okay, so lassen sich die Daten im zweiten Schritt umbenannt:
find "/Volumes/NAS/Verzeichnis" -name '*[ \.]' -exec bash -c 'shopt -s extglob; mv -v "$1" "${1%%+( )}"' _ {} \;
Zu beachten ist, dass mehrere Dateinamen, die nach dem Entfernen des Leerzeichens am Ende den gleichen Namen ergeben, überschrieben werden. Die Option -n mit mv und/oder -b / –backup verhindern dies, wenn das installierte mv dies unterstützt.
- -n, –no-clobber eine vorhandene Datei nicht überschreiben
- –backup[=CONTROL] von jeder vorhandenen Zieldatei ein Backup erstellen
- -b wie –backup, akzeptiert aber kein Argument
Umlaute entfernen
Dieser Schritt ist zwar nicht zwingend notwendig, da Umlaute jedoch immer wieder Probleme in Skripten verursachen, werden auch diese entfernt.
find "/Volumes/NAS/Verzeichnis" -depth -name "*[äÄüÜöÖß]*" -exec bash -c 'x="{}"; y="$(sed "s/Ä/Ae/g; s/Ö/Oe/g; s/Ü/Ue/g; s/ä/ae/g; s/ö/oe/g; s/ü/ue/g; s/ß/ss/g;" <<< "$x")" && mv "$x" "$y" ' \;
Folgende Ersetzungen werden dabei vorgenommen:
- „Ä“ wird zu „Ae“
- „ä“ wird zu „ä“
- „Ö“ wird zu „Oe“
- „ö“ wird zu „oe“
- „Ü“ wird zu „Ue“
- „ü“ wird zu „ue“
- „ß“ wird zu „ss“
Werden weiteren Umlauten benötig, die ersetzt werden sollen, so lässt sich die Liste erweitern. Dazu die neuen Umlaute einfach nach demselben Muster in den für die Ersetzung zuständigen Teil der Anweisung hinzufügen. Gleiches ist natürlich vorne für den Suchstring notwendig, da die neu hinzugefügten Zeichen sonst erst gar nicht für die Verarbeitung betrachtet würden.
Fazit
Diese Schritte haben für meinen Anwendungsfall ausgereicht. Die SharePoint Migration, das Übertragen der Daten, ist nach durchführen der oben gezeigten Schritten fehlerfrei passiert. Die Dauer für den Durchlauf der hier gezeigten Befehle hängt stark von der Menge an Daten und der Geschwindigkeit des Laufwerks ab.
Zum Schluss habe ich die Daten mit rsync in den Ordner verschoben, der über OneDrive in die Cloud synchronisiert wird.
rsync -avn "/Volumes/NAS/Verzeichnis" "/Volumes/SharePoint"
[…] SharePoint Migration […]