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

10

Если вы создаете файл в 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\ но ни разу не упомянули, что ваши файлы не будут синхронизироваться, как я описал.

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

Ответы:

4

Новые файлы, созданные с помощью проводника Windows, возможно, не отображаются в bash, поскольку в них отсутствуют специальные атрибуты LXSS NTFS.

Когда LXSS создает файлы в корне LXSS, он присоединяет к ним дополнительную информацию через атрибуты NTFS для хранения вещей, которые не могут быть представлены стандартными атрибутами NTFS, таких как разрешения для файлов Linux. Если они отсутствуют, файлы не отображаются.

Это подтверждается тем фактом, что если вы создаете файл в bash, а затем делаете его копию с помощью проводника Windows, он появляется в bash. Вероятно, это связано с тем, что все специальные атрибуты LXSS были продублированы с файлом.

Уровень файловой системы LXSS также, по-видимому, кэширует файловую систему, поэтому записи каталога в bash не будут отражать фактическое состояние файловой системы, если файлы добавляются или удаляются, пока все терминалы bash не будут остановлены (что завершает сеанс LXSS в службе LXSS и отсюда очищает кеш).

Райан
источник
3

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

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

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

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

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

sabgenton
источник
3

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

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

усадьба
источник
3

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

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

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

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

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

ehiller
источник
0

Пока они не сработали, я установил cygwin sshd для видимости в собственную файловую систему NTFS и запустил ubuntu sshd для видимости файлов lsxx linux. используйте apt-get для установки sshfs и win-sshfs, чтобы монтировать каждый путь. Это обходной хак, но у меня пока работает.

Если вы не хотите связываться с cygwin sshd, вы можете использовать cygwin ssh для просмотра файлов туда-сюда.

Использование cygwin sshd помогает обойти проблемы с правами доступа к файлам, используя реальную учетную запись администратора в файле .ssh / config. У меня были странные разрешения на доступ через интерфейс DevFS / NTFS.

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