#javascript #node.js #path #electron #drive
Вопрос:
В моем Electron/Node.js приложение, которое мне нужно, чтобы определить, находятся ли два пути на одном диске.
В Windows я мог бы использовать path.parse(myPath).root
для получения буквы диска каждого пути. Но на Mac или Linux это просто вернет»/», в соответствии с Node.js документация.
Существует ли кроссплатформенный способ узнать, находятся ли два пути на одном диске? Или в противном случае, как мне определить это на Mac? В Linux?
Комментарии:
1. Что вы имеете в виду под драйвом в среде *nix? Диски предназначены для Windows.
2. Да, конечно, не буквы дисков в не Windows. Проблема в том, что на любом данном диске не так много места, и мне нужно знать, указывают ли два пути, с которыми я имею дело, на один и тот же диск. Кстати, меня не волнует различие между виртуальными и физическими дисками.
3. Что вы имеете в виду под драйвами? Вы имеете в виду устройства или разделы? Как насчет различных протоколов, таких как SMB, SSHFS или NFS. В Linux вы можете монтировать сетевые папки или другие удаленные системы в свою файловую систему. Что делать, если я поделюсь локальной папкой в сети и смонтирую ее с помощью SMB? Являются ли эти две точки монтирования разными «дисками» или одинаковыми? У вас есть пути, которые не указывают на какое-либо физическое устройство, например /proc/12345 или /dev/null. /dev/null имеет неограниченное пространство 😉
4. А как насчет РЕЙДА? Один путь может быть общим для нескольких физических устройств. AFAIK вы можете делать подобные вещи с LVM. Понятие «диски», как вы знаете и ожидаете, в Windows, не существует в других системах.
5. Для Linux вы можете прочитать
/proc/mounts
список всех точек монтирования и устройств. Вы можете преобразовать пути с символическими ссылками в фактические абсолютные пути с помощью fs.realpath . Затем вы должны быть в состоянии найти соответствующий раздел для пути./proc/partitions
содержит список всех разделов и количество блоков.