Как получить доступ к файлам Ubuntu Bash в Windows (и к системному диску Windows в Bash)

В средах Linux, которые вы устанавливаете из Магазина (например, Ubuntu и openSUSE), файлы хранятся в скрытой папке. Вы можете получить доступ к этой папке для резервного копирования и просмотра файлов. Вы также можете получить доступ к своим файлам Windows из оболочки Bash.

Обновление : начиная с обновления Windows 10 за май 2019 г., появился официальный безопасный способ доступа к файлам Linux из приложений Windows.

Не изменяйте файлы Linux с помощью инструментов Windows

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

Другими словами, относитесь к папке Linux так, как если бы она была доступна только для чтения из Windows. Не используйте никакие инструменты Windows, включая графические приложения или инструменты командной строки, для их изменения. Также не создавайте новые файлы в этих папках с помощью инструментов Windows.

Если вы хотите работать с файлом как в среде Linux, так и в среде Windows, вы должны создать его в файловой системе Windows. Например, если у вас есть папка в C: \ project в Windows, вы также можете получить к ней доступ в / mnt / c / project в среде Linux. Поскольку он хранится в файловой системе Windows и доступен в / mnt / c, можно безопасно изменять файл с помощью инструментов Windows или Linux.

Где Windows хранит файлы Linux

Ваша файловая система Linux хранится в скрытой папке по какой-то причине, поскольку Microsoft не хочет, чтобы вы вмешивались в нее. Но если вам нужно просмотреть или создать резервную копию некоторых файлов, вы обнаружите, что они хранятся в скрытой папке. Чтобы получить к нему доступ, откройте проводник и введите следующий адрес в адресную строку:

% userprofile% \ AppData \ Local \ Packages

(Это приведет вас к C:\Users\NAME\AppData\Local\Packages. Вы также можете отображать скрытые папки в проводнике и перемещаться сюда вручную, если хотите.

В этой папке дважды щелкните папку с дистрибутивом Linux, файлы которого вы хотите просмотреть:

  • Ubuntu : CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
  • openSUSE Leap 42 : 46932SUSE.openSUSELeap42.2_022rs5jcyhyac
  • SUSE Linux Enterprise Server 12 : 46932SUSE.SUSELinuxEnterpriseServer12SP2_022rs5jcyhyac

Имена этих папок могут немного измениться в будущем. Просто найдите папку с названием дистрибутива Linux.

В папке дистрибутива Linux дважды щелкните папку «LocalState», а затем дважды щелкните папку «rootfs», чтобы просмотреть ее файлы.

Другими словами, файлы хранятся по адресу:

C: \ Users \ NAME \ AppData \ Local \ Packages \ DISTRO_FOLDER \ LocalState \ rootfs

Примечание . В более старых версиях Windows 10 эти файлы хранились в папке C: \ Users \ Name \ AppData \ Local \ lxss. Это изменилось, начиная с Fall Creators Update.

Чтобы просмотреть файлы, хранящиеся в вашей домашней папке, дважды щелкните «домашнюю» папку, а затем дважды щелкните свое имя пользователя UNIX.

Помните, не изменяйте ни один из этих файлов и не добавляйте файлы в эти папки из проводника!

Где отображается ваш системный диск Windows в Linux

Подсистема Windows для Linux делает доступным весь системный диск Windows, поэтому вы можете работать с одними и теми же файлами в обеих средах. Однако среда Bash не просто сбрасывает вас на диск C: \. Вместо этого он помещает вас в домашний каталог вашей учетной записи UNIX в файловой системе среды Linux.

Ваш системный диск Windows и другие подключенные диски отображаются в каталоге / mnt / там, где другие диски традиционно доступны в структуре каталогов Linux. В частности, вы найдете диск C: в следующем месте в среде Bash:

/ mnt / c

Чтобы перейти в этот каталог с помощью cdкоманды, просто введите:

cd / mnt / c

Если у вас есть диск D :, вы найдете его в / mnt / d и так далее.

Например, для доступа к файлу, хранящемуся в C: \ Users \ Chris \ Downloads \ File.txt, вы должны использовать путь /mnt/c/Users/Chris/Downloads/File.txt в среде Bash. И да, он чувствителен к регистру, поэтому вам нужны «Загрузки», а не «Загрузки».

СВЯЗАННЫЕ: Как смонтировать съемные диски и сетевые расположения в подсистеме Windows для Linux

Вы также можете монтировать внешние диски и сетевые папки для доступа к большему количеству файлов из среды Linux.

Обратите внимание, что при доступе к системным файлам Windows среда оболочки Bash имеет разрешения, с которыми она была запущена. Если вы запустили его в обычном режиме с помощью ярлыка, он будет иметь те же права доступа к файлам, что и ваша учетная запись Windows.

Например, если вы хотите получить доступ к системной папке, к которой у вашей учетной записи нет прав доступа, вам нужно будет щелкнуть правой кнопкой мыши ярлык оболочки Bash и выбрать «Запуск от имени администратора», чтобы запустить оболочку Bash с правами администратора Windows. .

Это работает так же, как командная строка, которую необходимо запускать от имени администратора, если вам нужен доступ на запись к файлам только для администратора или доступ на запись к системным файлам. Вы не можете просто использовать sudoв среде Bash.