WSL (Ubuntu / Windows) AppData \ Local \ Lxss на самом деле не синхронизируются обратно с Ubuntu, идеи?

7214
sabgenton

Если вы создаете файл в bash (touch /root/foo.txt), который появляется в скрытых каталогах при AppData\Local\Lxss\ его изменении, он не изменяется в bash. Хуже, если вы измените его снова в bash, файл, который вы изменили через проводник, будет засорен!

Есть ли настоящая точка монтирования C:\?

Где настоящий образ прячется ?? (как в реальности файловая система записывает обратно в файл изображения?)

0:14:29 в этом https://channel9.msdn.com/Events/Build/2016/C906, кажется, утверждают, что у вас будет полный доступ из проводника. 0:16:30 они показывают вам, AppData\Local\Lxss\ но ни разу не упомянули, что ваши файлы не будут синхронизироваться, как я описал.

8
Печально, что нет linux-бинарного файла или чего-то такого, что могло бы использовать вызовы sys, которым они научили ntkernel за пределами тюрьмы (для этого в cygwin :(), но им нужно по крайней мере смонтировать корневую файловую систему, доступную для записи в windows C: \ when юбилей идет золотом. sabgenton 8 лет назад 0
Я думаю, что всегда есть самба :( sabgenton 8 лет назад 0
Очевидно, это не предназначено для использования таким образом. https://github.com/Microsoft/BashOnWindows/issues/45 wbkang 8 лет назад 1
Что за черепок `cosmicdan`, кажется, говорит только то, что я сделал в конце комментариев. Mac кажется все еще более приятной настройкой прямо сейчас. sabgenton 8 лет назад 0

5 ответов на вопрос

3
Ryan

New files that are created via Windows Explorer are possibly not appearing in bash because they are missing special LXSS NTFS attributes.

When LXSS creates files in the LXSS root, it attaches additional information to them via NTFS attributes to store things that cannot be represented by the standard NTFS attributes, such as Linux file permissions. If these are missing, it the files don't show up.

This is supported by the fact that if you make a file in bash, and then make a copy of it with Windows Explorer, it appears in bash. This is presumably because all of the special LXSS attributes were duplicated with the file.

The LXSS filesystem layer also appears to cache the file system, so the directory entries in bash will not reflect the actual state of the file system if files are added or deleted until all bash terminals are stopped (which ends the LXSS session in the LXSS service and hence clears the cache).

3
toft

Что мне подходит, так это копирование с помощью bash вместо использования Explorer.

C-диск в / мнт / с так, чтобы скопировать папку C: \ TMP \ test1 в / TMP / в вашем домашнем каталоге баш сделать: cp -r /mnt/c/tmp/test1 ~/tmp.

2
sabgenton

Хорошо, кажется, что вещи в AppData\Local\Lxss\изменяемы и будут синхронизироваться с сеансом Ubuntu Bash.

Вы должны полностью закрыть bash. И вы не можете создавать новые файлы.

Странно, как Microsoft, кажется, говорит, что вы не можете.

Однако кроме того, что надоедает, это все еще не очень удобно, так как создание новых файлов, похоже, не работает.

Я не знаю, помещает ли сеанс bash что-то в оперативную память или что, но Microsoft может заставить это случиться, это появляется .. Если они выбирают.

2
ehiller

Я думаю, вы найдете это ... невероятно полезным. Там довольно много полезной информации, но ее можно подытожить, применимо здесь, в одном разделе:

Совместимость с Windows

Хотя файлы VolFs хранятся в обычных файлах Windows в указанных выше каталогах, совместимость с Windows не поддерживается. Если новый файл добавляется в один из этих каталогов из Windows, ему не хватает советников, необходимых для VolF, поэтому они не знают, что делать с файлом, и просто игнорируют его. Многие редакторы также удаляют советники при сохранении существующего файла, снова делая файл непригодным для использования в WSL.

Кроме того, поскольку VFS кэширует записи каталогов, любые изменения в этих каталогах, выполненные из Windows во время работы WSL, могут не отражаться точно.

В статье рассказывается о специфике файловой системы и расширенных атрибутах. Но в целом, изменение файлов WSL из Windows не требуется.

0
Stuart Rothrock

Until they get this worked out, I installed cygwin sshd for visibility to the native NTFS file system and ran the ubuntu sshd for visibility to the lsxx linux files. use apt-get to install sshfs and win-sshfs to do mounts each way. It is a round-about hack but works for me for now.

If you didn't want to mess with the cygwin sshd, you could use cygwin ssh to scp the files back and forth.

Using cygwin sshd helps get around file permissions issues by using a real administrator account in the .ssh/config file. I had some strange access permissions going through the DevFS/NTFS interface.

Вы должны «обмениваться» файлами только через / mnt / в LXSS, а не через корневую файловую систему. ZiggyTheHamster 5 лет назад 0