WSL (Ubuntu / Windows) AppData \ Local \ Lxss wird nicht wirklich wieder mit Ubuntu synchronisiert, Ideen?

9

Wenn Sie in bash eine Datei erstellen (touch /root/foo.txt), die beim AppData\Local\Lxss\ Ändern in den versteckten Verzeichnissen angezeigt wird, wird sie in bash nicht geändert. Schlimmer noch, wenn Sie es in Bash erneut ändern, wird die Datei, die Sie über den Explorer geändert haben, überlastet!

Gibt es einen echten Einhängepunkt C:\?

Wo versteckt sich das wirkliche Bild? (Wie schreibt das Dateisystem in der Realität zurück in eine Bilddatei?)

0:14:29 in diesem https://channel9.msdn.com/Events/Build/2016/C906 scheint zu behaupten, dass Sie vollen Zugriff vom Explorer haben werden. 0:16:30 Sie zeigen es Ihnen AppData\Local\Lxss\ , erwähnen aber nicht einmal, dass Ihre Dateien nicht wie beschrieben synchronisiert werden.

Sabgenton
quelle
Es ist traurig, dass es keine Linux-Binärdatei oder etwas gibt, das die sys-Aufrufe verwenden kann, die sie dem ntkernel außerhalb des Gefängnisses beigebracht haben (zurück zu cygwin dafür :(), aber sie müssen mindestens das unter Windows C: \ when beschreibbare Root-Dateisystem mounten Jubiläum wird Gold.
Sabgenton
Ich denke, es gibt immer Samba :(
Sabgenton
1
Anscheinend soll es nicht so verwendet werden. github.com/Microsoft/BashOnWindows/issues/45
wbkang
Was für ein Topf. cosmicdanscheint genau das zu sagen, was ich gegen Ende der Kommentare getan habe. Mac scheint momentan noch ein besseres Setup zu sein.
Sabgenton

Antworten:

4

Neue Dateien, die über den Windows Explorer erstellt wurden, werden möglicherweise nicht in Bash angezeigt, da ihnen spezielle LXSS NTFS-Attribute fehlen.

Wenn LXSS Dateien im LXSS-Stammverzeichnis erstellt, werden zusätzliche Informationen über NTFS-Attribute angehängt, um Dinge zu speichern, die nicht durch die Standard-NTFS-Attribute dargestellt werden können, z. B. Linux-Dateiberechtigungen. Wenn diese fehlen, werden die Dateien nicht angezeigt.

Dies wird durch die Tatsache unterstützt, dass eine Datei, die Sie in Bash erstellen und dann mit Windows Explorer kopieren , in Bash angezeigt wird. Dies liegt vermutlich daran, dass alle speziellen LXSS-Attribute mit der Datei dupliziert wurden.

Die LXSS-Dateisystemschicht scheint auch das Dateisystem zwischenzuspeichern, sodass die Verzeichniseinträge in bash nicht den tatsächlichen Status des Dateisystems widerspiegeln, wenn Dateien hinzugefügt oder gelöscht werden, bis alle bash-Terminals gestoppt sind (wodurch die LXSS-Sitzung im LXSS-Dienst beendet wird) und löscht damit den Cache).

Ryan
quelle
3

Ok, es scheint, dass die Inhalte AppData\Local\Lxss\geändert werden können und wieder mit der Ubuntu-Bash-Sitzung synchronisiert werden.

Sie müssen bash vollständig schließen. Und Sie können keine neuen Dateien erstellen.

Seltsam, wie Microsoft zu sagen scheint, dass Sie nicht können.

Abgesehen davon, dass dies ärgerlich ist, ist dies immer noch nicht sehr nützlich, da das Erstellen neuer Dateien anscheinend nicht funktioniert.

Ich weiß nicht, ob die Bash-Sitzung Dinge in den RAM legt oder was, aber Microsoft kann dies ermöglichen. Es scheint. Wenn sie es wünschen.

Sabgenton
quelle
3

Was für mich funktioniert, ist das Kopieren mit Bash anstelle des Explorers.

Das C-Laufwerk befindet sich unter / mnt / c. Um den Ordner C: \ tmp \ test1 nach / tmp / in Ihrem Bash-Ausgangsverzeichnis zu kopieren, gehen Sie wie folgt vor : cp -r /mnt/c/tmp/test1 ~/tmp.

toft
quelle
3

Ich denke, Sie werden das finden ... unglaublich hilfreich. Dort gibt es eine Menge nützlicher Informationen, die jedoch in einem Abschnitt zusammengefasst werden können:

Interoperabilität mit Windows

Während VolFs-Dateien in regulären Dateien unter Windows in den oben genannten Verzeichnissen gespeichert werden, wird die Interoperabilität mit Windows nicht unterstützt. Wenn eine neue Datei von Windows zu einem dieser Verzeichnisse hinzugefügt wird, fehlen die von VolFs benötigten EAs, sodass VolFs nicht wissen, was mit der Datei zu tun ist, und sie einfach ignorieren. Viele Editoren entfernen auch die EAs, wenn sie eine vorhandene Datei speichern, wodurch die Datei in WSL wieder unbrauchbar wird.

Da VFS Verzeichniseinträge zwischenspeichert, werden Änderungen an den Verzeichnissen, die unter Windows vorgenommen werden, während die WSL ausgeführt wird, möglicherweise nicht genau wiedergegeben.

Der Artikel befasst sich auch mit den Besonderheiten des Dateisystems und den erweiterten Attributen. Zusammenfassend lässt sich sagen, dass das Ändern von WSL-Dateien unter Windows kein Problem ist.

ehiller
quelle
0

Bis dies geklärt ist , habe ich cygwin sshd installiert, um die Sichtbarkeit des nativen NTFS-Dateisystems zu gewährleisten, und ubuntu sshd ausgeführt, um die Sichtbarkeit der lsxx-Linux-Dateien zu gewährleisten. Verwenden Sie apt-get, um sshfs zu installieren, und win-sshfs , um Mounts in jede Richtung durchzuführen . Es ist ein Round-About-Hack, funktioniert aber vorerst für mich.

Wenn Sie sich nicht mit dem cygwin sshd anlegen möchten, können Sie cygwin ssh verwenden, um die Dateien hin und her zu scpen.

Die Verwendung von cygwin sshd hilft bei der Umgehung von Problemen mit Dateiberechtigungen, indem ein echtes Administratorkonto in der Datei .ssh / config verwendet wird. Ich hatte einige seltsame Zugriffsberechtigungen über die DevFS / NTFS-Schnittstelle.

Stuart Rothrock
quelle
Sie sollten Dateien nur über / mnt / in LXSS "freigeben", nicht über das Root-Dateisystem.
ZiggyTheHamster