WSL (ubuntu / windows) AppData \ Local \ Lxss synchronisiert sich nicht wirklich auf Ubuntu, Ideen?

7311
sabgenton

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

Gibt es einen echten Mount-Punkt C:\?

Wo versteckt sich das wahre Bild? (Wie schreibt das Dateisystem in Wirklichkeit eine Bilddatei zurück?)

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

8
Es ist traurig, dass es kein Linux-Binary oder keine Sache gibt, die die Sys-Aufrufe verwenden kann, die sie dem NTkernel außerhalb des Gefängnisses beigebracht haben (zurück zu cygwin für das :() Jubiläum wird Gold. sabgenton vor 8 Jahren 0
Ich denke es gibt immer Samba :( sabgenton vor 8 Jahren 0
Anscheinend soll es nicht so verwendet werden. https://github.com/Microsoft/BashOnWindows/issues/45 wbkang vor 8 Jahren 1
Was für ein Scheiß. "cosmicdan" scheint genau das zu sagen, was ich am Ende der Kommentare getan habe. Mac scheint momentan noch ein netteres Setup. sabgenton vor 8 Jahren 0

5 Antworten auf die Frage

3
Ryan

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

Wenn LXSS Dateien im LXSS-Stammverzeichnis erstellt, fügt es über NTFS-Attribute zusätzliche Informationen an, 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 wenn Sie eine Datei in Bash erstellen und dann mit Windows Explorer eine Kopie davon erstellen, diese 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, so dass 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 angehalten sind (was die LXSS-Sitzung im LXSS-Dienst beendet und löscht daher den Cache).

3
toft

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

Das C-Laufwerk ist unter / mnt / c so, um den Ordner C zu kopieren: \ tmp \ test1 / tmp / in Ihrem Home - Verzeichnis bash tun: cp -r /mnt/c/tmp/test1 ~/tmp.

2
sabgenton

Ok, es sieht so aus, als wäre das Zeug AppData\Local\Lxss\modifizierbar und wird wieder mit der Ubuntu-Bash-Session synchronisiert.

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

Seltsam wie Microsoft anscheinend sagt, dass Sie nicht können.

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

Ich weiß nicht, ob die bash-Sitzung Sachen in RAM schreibt oder was, aber Microsoft kann dies passieren lassen, es erscheint. Wenn sie wählen.

2
ehiller

Ich denke, Sie werden das unglaublich hilfreich finden. Es gibt 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 sind, 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 weiß, was mit der Datei zu tun ist, und ignoriert es einfach. Viele Editoren entfernen auch den EAs, wenn eine vorhandene Datei gespeichert wird. Dadurch wird die Datei in WSL unbrauchbar.

Da VFS Verzeichniseinträge zwischenspeichert, werden alle Änderungen an diesen Verzeichnissen, die während der Ausführung von WSL von Windows vorgenommen werden, möglicherweise nicht korrekt wiedergegeben.

Der Artikel spricht auch über die Besonderheiten des Dateisystems und die erweiterten Attribute. Zusammenfassend lässt sich sagen, dass das Ändern von WSL-Dateien unter Windows ein No-Go ist.

0
Stuart Rothrock

Bis das geklärt ist, habe ich cygwin sshd installiert, um das NTFS-Dateisystem sichtbar zu machen, und das Ubuntu sshd für die Sichtbarkeit der lsxx-Linux-Dateien ausgeführt. Verwenden Sie apt-get, um sshfs und win-sshfs zu installieren, um jede Methode zu aktivieren . Es ist ein Rundum-Hack, funktioniert aber für mich erst einmal.

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

Mit cygwin sshd können Sie Probleme mit Dateiberechtigungen umgehen, indem Sie ein echtes Administratorkonto in der Datei .ssh / config verwenden. Ich hatte einige seltsame Zugriffsberechtigungen für die DevFS / NTFS-Schnittstelle.

Sie sollten Dateien nur über / mnt / in LXSS "freigeben", nicht über das Root-Dateisystem. ZiggyTheHamster vor 5 Jahren 0