Как установить клиент fs в Windows 10

Обновлено: 21.11.2024

В Windows Server 2016/2019 и Windows 10 (начиная со сборки 1709) сетевой протокол Server Message Block 1.0 (SMBv1), используемый для доступа к общим папкам, по умолчанию отключен. В большинстве случаев этот протокол требуется для доступа к общим папкам, размещенным в устаревших системах, таких как более не поддерживаемые Windows XP, Windows Server 2003 и более старые ОС. В этой статье мы рассмотрим, как включить или отключить поддержку клиентов и серверов SMBv1 в Windows 10 и Windows Server 2016/2019.

Если в вашей сети не осталось клиентов SMB 1.x, вы должны полностью отключить SMBv1 на всех устройствах Windows. Отключив SMB 1.0, вы можете защитить компьютеры Windows от широкого спектра уязвимостей в этом унаследованном протоколе (самый известный общедоступный эксплойт для SMBv1 — EternalBlue). В результате ваши устройства будут использовать новые, более эффективные, безопасные и функциональные версии протокола SMB при доступе к общим сетевым ресурсам.

В одной из предыдущих статей мы показывали таблицу совместимости клиентской и серверной версий SMB. Согласно таблице, старые версии клиентов (XP, Server 2003 и некоторые *nix-клиенты) могут получать доступ к общим сетевым папкам только по протоколу SMB v1.0. Если таких клиентов в сети нет, можно полностью отключить SMB 1.0 на стороне файловых серверов (включая контроллеры домена AD) и клиентских рабочих столов.

В Windows 10 и Windows Server 2016 протокол SMBv1 разделен на два отдельных компонента — SMB-клиент и SMB-сервер, которые можно включать и отключать независимо друг от друга.

Аудит доступа к общей папке через SMB v1.0

Прежде чем отключать или полностью удалять драйвер SMB 1.0 на стороне файлового сервера SMB, стоит убедиться, что в вашей сети нет устаревших клиентов, использующих его. Для этого включите аудит доступа к файловому серверу через SMB v1.0 с помощью следующей команды PowerShell:

Set-SmbServerConfiguration –AuditSmb1Access $true

Через пару дней откройте средство просмотра событий на сервере, проверьте журнал Приложения и службы -> Microsoft -> Windows -> SMBServer -> Аудит и посмотрите, обращались ли какие-либо клиенты к файловому серверу через SMB1.

Совет. Вы можете отобразить список событий из этого журнала событий с помощью следующей команды PowerShell:
Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit

В нашем примере в журнале было обнаружено событие с идентификатором EventID 3000 из источника SMBServer. Событие указывает на то, что клиент 192.168.1.10 пытается получить доступ к серверу по протоколу SMB1.

Вам необходимо найти этот компьютер или устройство в сети и обновить ОС или прошивку до версии, которая поддерживает новые версии протокола SMB: SMBv2 или SMBv3.

В нашем случае мы проигнорируем эту информацию, но вы должны иметь в виду, что позже этот клиент не сможет получить доступ к общим папкам на этом SMB-сервере.

Включить/отключить SMB 1.0 в Windows Server 2016/2019

В Windows Server 2016, начиная со сборки 1709, и Windows Server 2019 по умолчанию отключен SMBv1. Чтобы включить поддержку клиентского протокола SMBv1 в новых версиях Windows Server, необходимо установить отдельную функцию поддержки общего доступа к файлам SMB 1.0/CIFS.

Вы можете установить компонент SMBv1 с помощью диспетчера серверов или PowerShell.

Вы можете проверить, включен ли SMBv1, с помощью команды PowerShell:

Чтобы установить компонент FS-SMB1, выполните:

Чтобы удалить функцию клиента SMBv1 (требуется перезагрузка), выполните команду:

Uninstall-WindowsFeature – Имя FS-SMB1 – Удалить

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -Remove

Чтобы ваш сервер мог обрабатывать клиентский доступ SMBv1.0, вам необходимо включить поддержку SMBv1 на уровне файлового сервера SMB в дополнение к компоненту FS-SMB1. Чтобы проверить, включен ли доступ SMBv1 для общих сетевых ресурсов на вашем сервере, выполните:

Строка «EnableSMB1Protocol: True» означает, что вам разрешен доступ к общим папкам на этом сервере по протоколу SMBv1. Чтобы отключить поддержку сервера SMBv1 в Windows Server, выполните команду PowerShell:

Set-SmbServerConfiguration-EnableSMB1Protocol $false-Force

Теперь используйте командлет Get-SmbServerConfiguration, чтобы убедиться, что сервер SMB1 отключен.

Чтобы включить поддержку SMBv1 на сервере, выполните команду:

Set-SmbServerConfiguration-EnableSMB1Protocol $True-Force

В Windows 7/8 и Windows Server 2008 R2/2012 для отключения клиента SMB 1.0 необходимо отключить службу и драйвер доступа SMBv1 с помощью команд:

sc.exe config lanmanworkstation depend= Bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled

Как включить/отключить SMBv1 в Windows 10?

Как мы уже говорили, во всех новых сборках Windows10 (начиная с 1709) отключена поддержка протокола SMB1 (также отключен гостевой доступ по протоколу SMBv2).

В Windows 10 вы можете проверить состояние компонентов протокола SMBv1 с помощью команды DISM:

Dism /online /Get-Features /format:table | найдите "Протокол SMB1"

В нашем примере вы можете видеть, что все функции SMBv1 отключены:

  • Автоматическое удаление SMB 1.0/CIFS
  • Клиент SMB 1.0/CIFS
  • Сервер SMB 1.0/CIFS

Вы можете включить клиент и сервер SMBv1 в Windows 10 из окна управления функциями или с помощью команд:

Dism /online /Enable-Feature /FeatureName:"SMB1Protocol"
Dism /online /Enable-Feature /FeatureName:"SMB1Protocol-Client"
Dism /online /Enable-Feature /FeatureName:" Сервер протокола SMB1"

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Server
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

Если после включения клиента SMBv1 он не используется более 15 дней, он автоматически отключается.

Автоматическое удаление клиента SMBv1 — это одноразовая операция. Если администратор снова вручную включит SMBv1, он не будет отключен автоматически.

Чтобы отключить поддержку клиента и сервера SMB1 в Windows 10, выполните следующие команды DISM:

Dism /online /Disable-Feature /FeatureName:"SMB1Protocol"
Dism /online /Disable-Feature /FeatureName:"SMB1Protocol-Client"
Dism /online /Disable-Feature /FeatureName:" Сервер протокола SMB1"

Если вы отключили клиент SMBv1 в Windows 10, то при доступе к скрытой папке на файловом сервере, который поддерживает только SMBv1 (протоколы SMBv2 и v3 отключены или не поддерживаются), вы можете получить следующие ошибки:

Кроме того, если вы отключите клиент SMBv1, служба обозревателя компьютеров, которая используется устаревшим протоколом NetBIOS для обнаружения устройств в сети, перестанет работать на компьютере. Чтобы правильно отображать соседние компьютеры в сети Windows 10, необходимо настроить службу узла провайдера обнаружения компонентов (см. эту статью).

Отключение клиента и сервера SMBv1 с помощью групповой политики

В среде домена Active Directory вы можете отключить SMBv1 на всех серверах и компьютерах с помощью групповых политик (GPO). Поскольку в стандартных групповых политиках Windows нет отдельной политики настройки SMB, вам придется отключить ее через политику реестра.

  1. Откройте консоль управления групповыми политиками ( gpmc.msc ), создайте новый объект групповой политики (disableSMBv1) и свяжите его с OU, содержащей компьютеры, на которых вы хотите отключить SMB1;
  2. Переключитесь в режим редактирования политики. Разверните раздел GPO «Конфигурация компьютера» -> «Настройки» -> «Параметры Windows» -> «Реестр»;
  3. Создайте новый элемент реестра со следующими параметрами:
    Действие: Обновить
    Hive: HKEY_LOCAL_MACHINE
    Путь к ключу: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
    Имя значения: SMB1
    Тип значения: REG_DWORD
    Данные значения: 0

    Эта политика отключит поддержку серверного компонента SMBv1 через реестр на всех компьютерах.

Если вы хотите отключить клиент SMB на компьютерах домена через GPO, создайте два дополнительных параметра реестра:

  • Параметр Start (тип REG_DWORD) со значением 4 в разделе реестра HKLM\SYSTEM\CurrentControlSet\services\mrxsmb10;
  • Параметр DependOnService (тип REG_MULTI_SZ) со значением Bowser, MRxSmb20, NSI (каждое значение с новой строки) в ключе реестра HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation.

Осталось обновить настройки групповой политики на клиентах ( gpupdate /force ) и после перезагрузки убедиться, что компоненты SMBv1 полностью отключены.

Пользователи Windows Server 2012 R2 и более поздних версий могут монтировать файловую систему на любую доступную букву диска, используя целевой IP-адрес монтирования и путь экспорта файловой системы.

Клиент Windows NFS должен быть установлен на экземпляре, из которого вы хотите смонтировать файловую систему.

Внимание

Для установки клиента Windows NFS может потребоваться перезагрузка системы.

Для доступа к файловым системам NFS требуются удостоверения пользователей и групп в стиле UNIX, которые отличаются от удостоверений пользователей и групп Windows. Чтобы предоставить пользователям доступ к общим ресурсам NFS, клиент Windows для NFS анонимно обращается к файловым системам, используя AnonymousGid и AnonymousUid . В совершенно новых файловых системах права на запись предоставляются только пользователю root. Значения идентификаторов AnonymousGid и AnonymousUid должны быть настроены так, чтобы разрешить доступ для записи.

Внимание

Для обновления значений AnonymousGid и AnonymousUid необходимо внести изменения в реестр вашей системы.

После того как вы установили клиент NFS и правильно сопоставили удостоверения пользователей, вы можете смонтировать файловую систему на любую доступную букву диска, используя командную строку или подключив сетевой диск. Вы можете получить доступ к своей файловой системе через выбранную букву диска для записи файлов.

Предпосылки

  • Файловая система должна иметь хотя бы один экспорт хотя бы в одну цель монтирования. Когда вы создаете новую файловую систему, одновременно создается экспорт для файловой системы. Дополнительные сведения см. в разделе Создание файловых систем.
  • Правильно настроенные правила безопасности для цели монтирования. Информацию о том, как работают правила безопасности в Oracle Cloud Infrastructure, см. в Правилах безопасности. Используйте инструкции в разделе Настройка правил безопасности VCN для файлового хранилища, чтобы правильно настроить правила безопасности для ваших файловых систем.

Внимание

При монтировании файловых систем следующая комбинация параметров монтирования не поддерживается службой хранилища файлов:

  • soft, когда файловая система монтируется с параметром монтирования для чтения/записи ( -o rw ). Эта комбинация может привести к повреждению ваших данных.

Следующие параметры монтирования или комбинации параметров монтирования не рекомендуются для использования со службой хранилища файлов:

  • soft, если файловая система смонтирована с параметром монтирования только для чтения ( -o ro ) и указано время менее 300 секунд. Эта комбинация может привести к большому количеству ответов об ошибках ввода-вывода.
  • rsize или wsize. Эти параметры вызывают проблемы с производительностью.

Примечание

При монтировании файловых систем Network Lock Manager (NLM) для блокировки файлов по умолчанию включен. По умолчанию не требуется указанный параметр монтирования. Типичные рабочие нагрузки NFS обычно работают по умолчанию.

Некоторым приложениям может потребоваться указать параметр монтирования без блокировки. Рекомендации по этому варианту монтирования см. в документации к вашему приложению.

Использование командной строки Windows

Если вы используете образы платформы Windows, клиент NFS уже установлен, и сопоставлены правильные идентификаторы пользователей. Перейдите к шагу 4.

Откройте Windows PowerShell и запустите от имени администратора:

    Перейдите в меню «Пуск» и щелкните значок Windows PowerShell.

В Windows PowerShell введите следующую команду для запуска от имени администратора:

Важно

Если вы настроили параметры экспорта для своей файловой системы, чтобы клиенты подключались через привилегированный исходный порт (1–1023), то вы должны установить для ключа реестра UseReservedPorts значение 1.

Закройте окно Администратор: PowerShell.

Откройте стандартное окно командной строки:

Важно

Файловые системы NFS, смонтированные от имени администратора, недоступны обычным пользователям.

В стандартном окне командной строки Windows (CMD) смонтируйте файловую систему, введя следующее. Замените 10.xxx: на IP-адрес локальной подсети, назначенный вашей цели монтирования, fs-export-path на путь экспорта, указанный вами при связывании файловой системы с целью монтирования, и X на букву любого доступного диска, который вы хотите для сопоставления файловой системы с.

Совет

Информация об IP-адресе и пути экспорта доступна на странице сведений целевого объекта монтирования, связанного с вашей файловой системой. Дополнительную информацию см. в разделе Просмотр сведений о цели подключения.

Важно

Путь экспорта — это путь к файловой системе (относительно целевого IP-адреса или имени хоста). Если вы не указали путь при связывании файловой системы и цели монтирования, то «/» представляет полный экстент цели монтирования. В этом случае вы должны использовать "!" при монтировании файловой системы. Например: смонтировать 10.0.0.0:/! Х:

Запишите файл в файловую систему, введя следующее. Замените X на букву диска, которую вы использовали на шаге 10, и helloworld на имя вашего файла.

Убедитесь, что вы можете просматривать файл, введя следующее.

Дополнительную информацию о типичных проблемах, с которыми вы можете столкнуться, см. в разделе Устранение неполадок с подключениями Windows NFS.

Работа с файлами так же распространена как в целях разработки, так и в целях, не связанных с разработкой. При повседневном использовании компьютера пользователь, скорее всего, будет читать и записывать данные в файлы в различных каталогах для выполнения таких задач, как сохранение загруженного файла или доступ к данным для использования в другом приложении. Точно так же серверной программе или инструменту интерфейса командной строки (CLI) может потребоваться записать загруженные данные в файл, чтобы сохранить их, или приложению, интенсивно использующему данные, может потребоваться экспортировать в JSON, CSV или Excel. форматы. Эти программы должны взаимодействовать с файловой системой операционной системы, в которой они работают.

С Node.js вы можете программно манипулировать файлами с помощью встроенного модуля fs. Название является сокращением от «файловая система», и модуль содержит все функции, необходимые для чтения, записи и удаления файлов на локальном компьютере. Этот уникальный аспект Node.js делает JavaScript удобным языком для программирования серверных приложений и инструментов CLI.

В этой статье вы будете использовать модуль fs для чтения файла, созданного с помощью командной строки, создания нового файла и записи в него, удаления созданного файла и перемещения первого файла в другую папку. Модуль fs поддерживает взаимодействие с файлами синхронно, асинхронно или через потоки; в этом руководстве основное внимание будет уделено тому, как использовать асинхронный API на основе Promise, который чаще всего используется разработчиками Node.js.

Предпосылки

Чтобы получить доступ к модулю fs и следовать инструкциям, на вашем компьютере должен быть установлен Node.js. В этом руководстве используется Node.js версии 10.22.0. Чтобы установить Node.js в macOS или Ubuntu 18.04, выполните действия, описанные в разделе «Установка Node.js и создание локальной среды разработки в macOS» или в разделе «Установка с помощью PPA» в разделе «Как установить Node.js в Ubuntu 18.04».

В этой статье для работы с файлами используются промисы JavaScript, особенно с синтаксисом async/await. Если вы не знакомы с промисами, синтаксисом async/await или асинхронным программированием, ознакомьтесь с нашим руководством «Как писать асинхронный код в Node.js».

Шаг 1 — Чтение файлов с помощью readFile()

На этом шаге вы напишете программу для чтения файлов в Node.js. Для этого вам нужно импортировать модуль fs, стандартный модуль Node.js для работы с файлами, а затем использовать функцию модуля readFile(). Ваша программа прочитает файл, сохранит его содержимое в переменной, а затем выведет его содержимое на консоль.

Первым шагом будет настройка среды кодирования для этого задания и действий, описанных в последующих разделах.

Создайте папку для хранения кода. В вашем терминале создайте папку с именем node-files :

Измените рабочий каталог на только что созданную папку с помощью команды cd:

В этой папке вы создадите два файла. Первый файл будет новым файлом с содержимым, которое ваша программа будет читать позже. Второй файл будет модулем Node.js, который читает файл.

Создайте файл Greetings.txt с помощью следующей команды:

Команда echo выводит свой строковый аргумент на терминал. Вы используете > для перенаправления вывода эха в новый файл Greetings.txt .

Теперь создайте и откройте readFile.js в любом текстовом редакторе. В этом руководстве используется текстовый редактор терминала nano. Вы можете открыть этот файл с помощью nano следующим образом:

Код этого файла можно разбить на три части. Во-первых, вам нужно импортировать модуль Node.js, который позволяет вашей программе работать с файлами. В текстовом редакторе введите этот код:

Как упоминалось ранее, вы используете модуль fs для взаимодействия с файловой системой. Однако обратите внимание, что вы импортируете часть модуля .promises.

Когда модуль fs был впервые создан, основным способом написания асинхронного кода в Node.js были обратные вызовы. По мере того, как популярность промисов росла, команда Node.js работала над их поддержкой в ​​модуле fs из коробки. В Node.js версии 10 они создали объект promises в модуле fs, который использует промисы, в то время как основной модуль fs продолжает предоставлять функции, использующие обратные вызовы.В этой программе вы импортируете обещанную версию модуля.

После импорта модуля вы можете создать асинхронную функцию для чтения файла. Асинхронные функции начинаются с ключевого слова async. С помощью асинхронной функции вы можете разрешать промисы с помощью ключевого слова await вместо связывания промисов с методом .then().

Создайте новую функцию readFile(), которая принимает один аргумент — строку с именем filePath . Ваша функция readFile() будет использовать модуль fs для загрузки файла в переменную с использованием синтаксиса async/await.

Введите следующий выделенный код:

Вы определяете функцию с помощью ключевого слова async, чтобы впоследствии можно было использовать соответствующее ключевое слово await. Чтобы зафиксировать ошибки в вашей асинхронной операции чтения файла, вы заключаете вызов fs.readFile() с попыткой. поймать блок. В разделе try вы загружаете файл в переменную данных с помощью функции fs.readFile(). Единственным обязательным аргументом для этой функции является путь к файлу, который задается в виде строки.

По умолчанию функция fs.readFile() возвращает объект буфера. Буферный объект может хранить файлы любого типа. Когда вы регистрируете содержимое файла, вы конвертируете эти байты в текст с помощью метода toString() объекта буфера.

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

Наконец, вызовите функцию в файле Greetings.txt со следующей выделенной строкой:

Обязательно сохраните содержимое. С nano вы можете сохранить и выйти, нажав CTRL+X .

Теперь ваша программа прочитает созданный ранее файл Greetings.txt и запишет его содержимое в терминал. Подтвердите это, выполнив свой модуль с узлом:

Вы получите следующий вывод:

Теперь вы прочитали файл с помощью функции readFile() модуля fs, используя синтаксис async/await.

Примечание. В некоторых более ранних версиях Node.js вы получите следующее предупреждение при использовании модуля fs:

Объект promises модуля fs был введен в Node.js версии 10, поэтому в некоторых более ранних версиях этот модуль по-прежнему называется экспериментальным. Это предупреждение было удалено, когда API стал стабильным в версии 12.6.

Теперь, когда вы прочитали файл с помощью модуля fs, вам нужно создать файл и записать в него текст.

Шаг 2 — Запись файлов с помощью writeFile()

На этом этапе вы будете записывать файлы с помощью функции writeFile() модуля fs. Вы создадите CSV-файл в Node.js, в котором будет отслеживаться счет за продукты. При первой записи файла вы создадите файл и добавите заголовки. Во второй раз вы добавите данные в файл.

Откройте новый файл в текстовом редакторе:

Начните свой код с импорта модуля fs:

Вы продолжите использовать синтаксис async/await при создании двух функций. Первой функцией будет создание CSV-файла. Второй функцией будет добавление данных в файл CSV.

В текстовом редакторе введите следующий выделенный код:

Эта асинхронная функция сначала создает переменную csvHeaders, содержащую заголовки столбцов CSV-файла. Затем вы используете функцию writeFile() модуля fs для создания файла и записи в него данных. Первый аргумент — это путь к файлу. Поскольку вы указали только имя файла, Node.js создаст файл в том же каталоге, в котором вы выполняете код. Второй аргумент — это данные, которые вы записываете, в данном случае переменная csvHeaders.

Далее создайте новую функцию для добавления товаров в список покупок. Добавьте в текстовый редактор следующую выделенную функцию:

Асинхронная функция addGroceryItem() принимает три аргумента: название продукта, количество, которое вы покупаете, и цену за единицу. Эти аргументы используются с синтаксисом литерала шаблона для формирования переменной csvLine, которая является данными, которые вы записываете в файл.

Затем вы используете метод writeFile() так же, как и в функции openFile(). Однако на этот раз у вас есть третий аргумент: объект JavaScript. Этот объект имеет ключ флага со значением a . Флаги сообщают Node.js, как взаимодействовать с файлом в системе. Используя флаг a , вы говорите Node.js добавлять в файл, а не перезаписывать его. Если вы не укажете флаг, по умолчанию используется w, который создает новый файл, если его нет, или перезаписывает файл, если он уже существует. Вы можете узнать больше о флагах файловой системы в документации Node.js.

Чтобы завершить сценарий, используйте эти функции. Добавьте следующие выделенные строки в конец файла:

Для вызова функций сначала нужно создать функцию-оболочку с асинхронной функцией. Поскольку ключевое слово await нельзя использовать в глобальной области видимости на момент написания этого руководства, вы должны обернуть асинхронные функции в асинхронную функцию. Обратите внимание, что эта функция является анонимной, то есть у нее нет имени для идентификации.

Ваши функции openFile() и addGroceryItem() являются асинхронными функциями. Без включения этих вызовов в другую функцию вы не можете гарантировать порядок содержимого. Созданная вами оболочка определяется ключевым словом async. Внутри этой функции вы упорядочиваете вызовы функций с помощью ключевого слова await.

Наконец, определение асинхронной функции заключено в круглые скобки. Они сообщают JavaScript, что код внутри них является функциональным выражением. Скобки в конце функции и перед точкой с запятой используются для немедленного вызова функции. Это называется выражением немедленно вызываемой функции (IIFE). Используя IIFE с анонимной функцией, вы можете проверить, что ваш код создает файл CSV с тремя строками: заголовки столбцов, строка для яиц и последняя строка для nutella .

Сохраните и выйдите из nano, нажав CTRL+X .

Теперь запустите свой код с помощью команды node:

Вывода не будет. Однако в вашем текущем каталоге будет существовать новый файл.

Используйте команду cat для отображения содержимого groceries.csv:

Вы получите следующий вывод:

Ваш вызов openFile() создал новый файл и добавил заголовки столбцов для вашего CSV. Последующие вызовы addGroceryItem() добавили ваши две строки данных.

С помощью функции writeFile() вы можете создавать и редактировать файлы. Затем вы удалите файлы. Это обычная операция, когда у вас есть временные файлы или вам нужно освободить место на жестком диске.

Шаг 3 — Удаление файлов с помощью unlink()

На этом шаге вы удалите файлы с помощью функции unlink() в модуле fs. Вы напишете сценарий Node.js для удаления файла groceries.csv, созданного в предыдущем разделе.

В терминале создайте новый файл для этого модуля Node.js:

Теперь вы напишете код, создающий асинхронную функцию deleteFile(). Эта функция примет путь к файлу в качестве аргумента, передав его функции unlink() для удаления из вашей файловой системы.

В текстовом редакторе напишите следующий код:

Функция unlink() принимает один аргумент: путь к файлу, который вы хотите удалить.

Предупреждение. Когда вы удаляете файл с помощью функции unlink(), он не отправляется в вашу корзину или корзину, а навсегда удаляется из вашей файловой системы. Это действие необратимо, поэтому перед выполнением кода убедитесь, что вы хотите удалить файл.

Выйдите из nano , убедившись, что вы сохранили содержимое файла, нажав CTRL+X .

Теперь запустите программу. Запустите следующую команду в своем терминале:

Вы получите следующий вывод:

Чтобы подтвердить, что файл больше не существует, используйте команду ls в текущем каталоге:

Эта команда отобразит следующие файлы:

Теперь вы подтвердили, что ваш файл был удален с помощью функции unlink().

Вы научились читать, писать, редактировать и удалять файлы. В следующем разделе используется функция для перемещения файлов в разные папки. Изучив эту функцию, вы сможете выполнять самые важные задачи по управлению файлами в Node.js.

Шаг 4 — Перемещение файлов с помощью rename()

Папки используются для организации файлов, поэтому возможность программного перемещения файлов из одной папки в другую упрощает управление файлами. Вы можете перемещать файлы в Node.js с помощью функции rename(). На этом шаге вы переместите копию файла Greetings.txt в новую папку.

Прежде чем вы сможете написать свой модуль Node.js, вам нужно настроить несколько вещей. Начните с создания папки, в которую вы будете перемещать файл. В терминале создайте папку test-data в текущем каталоге:

Теперь скопируйте файл Greetings.txt, который использовался на первом этапе, с помощью команды cp:

Завершите настройку, открыв файл JavaScript, содержащий ваш код:

В модуле Node.js вы создадите функцию с именем moveFile(), которая вызывает функцию rename(). При использовании функции rename() вам необходимо указать путь к исходному файлу и путь к месту назначения. В этом примере вы будете использовать функцию moveFile() для перемещения файла Greetings-2.txt в папку test-data. Вы также измените его название на salutations.txt .

Введите следующий код в текстовом редакторе:

Как упоминалось ранее, функция rename() принимает два аргумента: путь к исходному файлу и путь к файлу назначения. Эта функция может перемещать файлы в другие папки, переименовывать файл в его текущем каталоге или перемещать и переименовывать одновременно. В своем коде вы перемещаете и переименовываете свой файл.

Сохраните и выйдите из nano, нажав CTRL+X .

Затем выполните эту программу с узлом . Введите эту команду, чтобы запустить программу:

Вы получите следующий вывод:

Чтобы подтвердить, что файл больше не существует в вашем текущем каталоге, вы можете использовать команду ls:

Эта команда отобразит эти файлы и папки:

Теперь вы можете использовать ls для вывода списка файлов в подпапке test-data:

Ваш перемещенный файл появится в результатах:

Теперь вы использовали функцию rename() для перемещения файла из текущего каталога во вложенную папку. Вы также переименовали файл с помощью того же вызова функции.

Заключение

В этой статье вы узнали о различных функциях для управления файлами с помощью Node.js. Сначала вы загрузили содержимое файла с помощью readFile(). Затем вы создали новые файлы и добавили данные в существующий файл с помощью функции writeFile(). Вы безвозвратно удалили файл с помощью функции unlink(), а затем переместили и переименовали файл с помощью rename().

Программная работа с файлами — важная функция Node.js. Программам может потребоваться вывести файлы для использования пользователем или сохранить данные для приложения, которое не всегда запущено. С помощью функций модуля fs разработчики могут контролировать использование файлов в наших программах Node.js.

Чтобы узнать больше о модуле fs, прочтите документацию по Node.js. Если вы хотите продолжить изучение Node.js, вы можете вернуться к серии «Как кодировать в Node.js» или просмотреть проекты и настройки программирования на нашей тематической странице Node.

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

ceph-dokan можно использовать для монтирования файловых систем CephFS в Windows. Он использует Dokany, драйвер Windows, который позволяет реализовывать файловые системы в пользовательском пространстве, почти как FUSE.

Чтобы начать, ознакомьтесь с руководством по установке.

Использование

Монтирование файловых систем

Чтобы смонтировать файловую систему ceph, можно использовать следующую команду:

Это смонтирует файловую систему ceph по умолчанию, используя букву диска x . Если ceph.conf размещен в расположении по умолчанию, то есть %ProgramData%\ceph\ceph.conf , этот аргумент становится необязательным.

Аргумент -l также позволяет использовать пустую папку в качестве точки подключения вместо буквы диска.

Uid и gid, используемые для монтирования файловой системы, по умолчанию равны 0 и могут быть изменены с помощью следующих опций ceph.conf:

Если у вас более одной FS в кластере Ceph, используйте параметр --client_fs для монтирования FS не по умолчанию:

Подкаталоги CephFS можно монтировать с помощью параметра --root-path:

Если установлены флаги -o --removable, монтирования будут отображаться в результатах Get-Volume:

Пожалуйста, используйте ceph-dokan --help для получения полного списка аргументов.

Учетные данные

Опция --id передает имя пользователя CephX, связку ключей которого мы намерены использовать для монтирования CephFS. Следующие команды эквивалентны:

Размонтирование файловых систем

Монтаж можно удалить, нажав Ctrl-C или используя команду unmap, например:

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

Ограничения

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

Еще одно замечание: cephfs не поддерживает обязательные блокировки файлов, на которые в значительной степени опирается Windows. На данный момент мы позволяем Dokan обрабатывать блокировки файлов, которые применяются только локально.

В отличие от rbd-wnbd, ceph-dokan в настоящее время не предоставляет служебную команду. Чтобы монтирование cephfs выдержало перезагрузку хоста, рассмотрите возможность использования NSSM.

Устранение неполадок

© Copyright 2016, авторы и участники Ceph. Под лицензией Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0). Редакция cb0d0fec .

Читайте также: