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
,cp
und 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
cd
zum Mountpoint und Aufruffind . | vidir -
; Verwenden Sie einen Texteditor Ihrer Wahl, zBkate
wie folgt:find . | EDITOR=kate vidir
Dadurch 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
sed
oder 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 2
diese Option, um nach diesen Pfaden zu sortieren. Dank-s
der ersterenAnalysis
sollte der ersteren noch vorangehenAnalysis (1)
.Verwenden Sie
uniq -f 1
diese 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.
vidir
entfernt 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
vidir
weigert 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~2
wenn 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 klugensort
zwischenfind
undvidir
helfen.