Dies ist der Ansatz, den ich unter Linux versuchen würde. Ich habe keine Erfahrung mit Google Filestream, Google Drive oder Synology CloudSync. Daher kann ich nicht sagen, ob die Lösung überhaupt angewendet werden kann. Trotzdem hoffe ich, dass Ihnen das zumindest ein paar Ideen geben wird.
Annahmen
- Sie können den Anteil in Ihrem Verzeichnisbaum montieren, so
mv,cpund andere vernünftige Werkzeuge können mit Verzeichnissen wie funktionieren, wenn sie lokal; - Dateien (oder Verzeichnisse) mit Pfaden, die nach dem Entfernen aller
(N)Zeichenfolgen identisch werden, sind in der Tat Instanzen derselben Datei (Verzeichnis). - Instanzen derselben Datei sollten nur eine Datei hinterlassen.
- Instanzen desselben Verzeichnisses sollten ihren Inhalt in einem einzigen Verzeichnis zusammenführen.
- Sie können alle Werkzeuge verwenden, die ich hier verwende.
Verfahren
Bitte lesen Sie die gesamte Antwort, bevor Sie versuchen, etwas zu tun.
Ich denke, dass einige Schritte als Skript geschrieben werden könnten, aber da die Lösung sehr experimentell ist, ist es besser, sie Schritt für Schritt von Hand zu machen und darauf zu achten, was passiert.
In einer Shell
cdzum Mountpoint und Aufruffind . | vidir -; Verwenden Sie einen Texteditor Ihrer Wahl, zBkatewie folgt:find . | EDITOR=kate vidirDadurch wird der Editor mit einer Liste aller Objekte geöffnet, von denen jedes eine eigene Nummer hat. Wenn Sie den Inhalt ändern und die (temporäre) Datei speichern und den Editor schließen, werden alle Änderungen übernommen. Im Allgemeinen können Sie Folgendes tun:
- Pfade ändern, um Dateien oder Verzeichnisse zu verschieben (umzubenennen);
- Zeilen löschen, um Dateien oder Verzeichnisse zu entfernen;
- Tauschen Sie zwei oder mehr Zahlen aus, um Dateien auszutauschen (Sie werden es nicht brauchen).
Speichern Sie die Datei nur, wenn Sie sicher sind, dass der neue Inhalt die gewünschte Verzeichnisstruktur beschreibt.
Kopieren Sie den Inhalt aus dem Editor in eine andere Datei. Es geht darum, damit zu arbeiten und das Ergebnis erst dann wieder einzufügen (und zu speichern), wenn Sie sicher sind, dass Sie es richtig verstanden haben. Die nächsten Schritte beziehen sich auf die neue Datei, sofern nicht ausdrücklich etwas anderes angegeben ist.
Verwenden Sie
sedoder ein anderes Werkzeug, um alle(N)Zeichenketten zu entfernen (beachten Sie das führende Leerzeichen). An diesem Punkt sollten Sie "saubere" Pfade erhalten, viele von ihnen werden mehr als einmal vorkommen (mit unterschiedlichen Nummernvidir).Verwenden Sie
sort -k 2diese Option, um nach diesen Pfaden zu sortieren. Dank-sder ersterenAnalysissollte der ersteren noch vorangehenAnalysis (1).Verwenden Sie
uniq -f 1diese Option, um doppelte Pfade zu löschen. Jetzt sollte jeder Pfad nur einmal vorkommen.Überprüfen Sie die Vernunft der im Ergebnis verschlüsselten Verzeichnisstruktur.
Fügen Sie das Ergebnis in den ursprünglichen Editor ein, speichern Sie die Datei und beenden Sie den Editor.
vidirentfernt Objekte, die fehlenden Nummern zugeordnet sind, und Objekte, die verbleibenden Nummern zugeordnet sind.
Testen
Ich würde diese Lösung zuerst verwenden , um die Verzeichnisstruktur zu replizieren:
cp -a --attributes-only /mountpoint/ /guinea_pig_dir/ und testen Sie die Prozedur für die resultierenden leeren Dateien. Dies sollte Probleme aufdecken (falls vorhanden) und die Methode hoffentlich verbessern.
Mögliche Probleme
vidirweigert sich, mit einigen nicht standardmäßigen Zeichen zu arbeiten.Im Allgemeinen ist die Reihenfolge der Objekte wichtig. Es gibt wenige Fallstricke, die Objekte erzeugen
foo~oderfoo~1,foo~2wenn eine Kollision mit auftrittfoo. Sie werden Ihren Verzeichnisbaum so zusammenziehen, dass keine Kollisionen erzeugt werden. Ich habe jedoch noch nicht alle möglichen Szenarien untersucht. Ich denke wirklich, Sie sollten damit experimentieren/guinea_pig_dir/und sehen, was Sie bekommen. Im Fall von Problemen vielleicht einem klugensortzwischenfindundvidirhelfen.