Как установить папку Dropbox на сетевое устройство

26.01.2017 40165   Комментарии (43)

Как известно, популярная программа облачного хранения данных Dropbox не позволяет располагать свою папку на сетевых устройствах.

Делает он это по принципиальным и, в общем, более или менее логично звучащим причинам, цитирую с сайта сервиса:

  • Dropbox несовместим с протоколами сетевого доступа к файловым системам.
  • Такой протокол не отправляет сообщения об изменении файлов. Когда вы запускаете Dropbox, он тщательно проверяет файлы, обнаруживает изменения и синхронизирует их. Но Dropbox также обычно должен получать сообщения об изменении файла, которые могут отправлять только физически подключенные диски.
  • Если переместить папку Dropbox на жесткий диск с нестандартной файловой системой, неизвестно, как именно поведет себя программа.
  • В таких файловых системах могут существовать ограничения, которые Dropbox в состоянии будет контролировать (например, ограничения, связанные с размером или типом файлов, и т. д.).

Тем не менее при использовании домашних и офисных сетевых накопителей (NAS) со стандартными сетевыми протоколами Windows или Mac при размещении папки Dropbox в расшаренной папке сетевого накопителя облачное хранилище работает абсолютно точно так же, как и при размещении папки на локальном диске, и никаких проблем с этим не возникает. Dropbox просто перестраховывается, чтобы к разработчикам не было претензий при использовании каких-то нестандартных протоколов и нестандартных файловых систем, вот и не позволяет размещать свою папку на сетевом устройстве - просто от греха.

(Впрочем, замечу, что многие продвинутые NAS умеют самостоятельно синхронизировать выбранные папки с облачными сервисами, включая Dropbox.)

Попробуйте в настройках предложить Dropbox перенести свою папку на сетевой диск - получите вот такое сообщение.

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

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

Вот у меня, например, в новом компьютере никакого жесткого диска уже нет - он мне там совершенно не нужен. И с Dropbox эту проблему мне нужно было как-то решать, потому что я в Dropbox могу хранить под терабайт данных на бизнес-аккаунте - так что, мне теперь только из-за Dropbox держать в компьютере жесткий диск? Или только под Dropbox приобретать дополнительный SSD, что было бы несусветной глупостью и совершенно пустой тратой денег?

Но решение в конце концов было найдено, причем оно оказалось достаточно несложным.

В операционной системе Windows есть волшебная команда под названием subst (от substitution - подстановка). С помощью этой команды можно какую-то папку назначить отдельным диском. Выполнение команды, например "subst x: d:Test", приведет к тому, что в системе появится новый диск с буквой X, внутри которого будет содержимое папки Test диска D.

Эта команда также умеет работать и с сетевыми папками, например вот таким образом: "subst x: \NASCollection": после этого содержимое папки Collection будет выводиться в виде отдельного диска X.

Вы уже догадались, да? Надо через subst назначить сетевую папку в виде отдельного диска и подсунуть этот диск Dropbox? У меня тоже была такая мысль, но так просто не сработает: в Dropbox встроена защита от таких умников и он при попытке указать такой подставленный диск снова выдает сообщение о том, что это сетевой носитель (в системе такой диск называют "Отключенным сетевым устройством", хотя оно подключено).

Но мы его все равно обманем. Просто не в один шаг, а в два. Делаем следующее.

Сначала на том диске локального компьютера, где лежит папка Dropbox, создаем новую папку с каким-то именем - например, ForDropbox. Далее с помощью команды subst эту папку назначаем каким-то диском - выберите сами нужную букву, но имейте в виду, что после этого буква будет использоваться именно для папки Dropbox. Давайте это будет, например, диск F, если эта буква еще не занята.

Команду subst вводим через окно "Выполнить" (клавиша Win+R). Разумеется, вы там указываете свои буквы дисков.

Выполнили (нажали ОК). Теперь у вас диск F - это содержимое папки ForDropbox на диске D.

Далее заходим в настройки параметров Dropbox (правая кнопка мыши на значке Dropbox в системной области уведомлений), там "Аккаунт" - "Расположение" - кнопка "Переместить". Там выбираем подставленный через subst диск F - он у нас указывает на папку локального диска, Dropbox по поводу него возражать не будет и после нажатия кнопки ОК целиком перенесет туда папку Dropbox.

Когда процесс закончится, опять правая кнопка мыши на значке Dropbox и выбираем "Выйти из Dropbox". Программа закроется.

Теперь убираем подстановку на диск F командой:

После этого папка ForDropbox со всем содержимым перемещается на желаемое сетевое устройство (с учетом того, сколько там должно быть свободного места и так далее).

Предположим, что мы эту папку переместили на адрес \NASBackup. (Если папка постоянно подключена в виде сетевого диска, то она просто будет иметь какую-то букву - предположим, H.)

Даем команду:

Ну или вот так, если расшаренная папка подключена в виде буквы диска H:

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

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

Запускать подстановку при старте системы можно следующим образом. В какой-то папочке создаете обычный текстовый файл с расширением CMD (да хоть "Блокнотом" или Shift+F4 в Total Commander) - например, mystart.cmd.

Внутри этого первоначально пустого файла вписываете строчку подстановки так, как она у вас выглядит, например:
subst f: \NASBackupForDropbox

Теперь важный момент по поводу загрузки Dropbox. Теперь, когда мы папку Dropbox поместили на сетевое хранилище, вам придется убрать в настройках Dropbox автоматическую загрузку при старте системы. Потому что почти наверняка он будет стартовать раньше файла mystart.cmd, при старте не обнаружит диск F и начнет вам кричать, что шеф, все пропало, диск пропал, как жить теперь, как жить. И вам придется программу закрыть. А потом запустить заново - после того, как диск F появится.

Зачем делать лишние действия, правильно? Поэтому в самом Dropbox автоматический старт выключаем. Если вам не надо, чтобы программа запускалась автоматом, ну тогда запускайте ее руками. Но если надо, тогда просто поставьте вызов Dropbox в том самом файле mystart.cmd, после subst дописав еще строчку (не забудьте поставить кавычки):
"c:Program Files (x86)DropboxClientDropbox.exe"

Это для 64-битных систем. Для 32-битных путь будет такой:
"c:Program FilesDropboxClientDropbox.exe"

И на последней строчке лучше добавить команду exit, чтобы окно закрылось.

Таким образом, mystart.cmd у вас будет выглядеть следующим образом:

subst f: \NASBackupForDropbox
"c:Program Files (x86)DropboxClientDropbox.exe"
exit

Сохраняете файл.

Теперь вам надо поставить его в автозагрузку. Можно сделать это через сценарии Windows, но проще по старинке - поместить ярлык на mystart.cmd в папку автозагрузок. В Windows 10 эту папку найти непросто, поэтому для быстрого доступа в окне "Выполнить" просто дайте такую команду и нажмите на ОК.

Перед вами откроется папка автозагрузки - просто поместите туда ярлык на mystart.cmd. (Можно и сам файл туда поместить, но лучше ярлык, чтобы вы могли вносить в этот файл изменения, не залезая в папку автозагрузки.)

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

Мы сделали это!

P. S. Кстати, этот способ, скорее всего, будет работать и для некоторых других приложений, не желающих работать с папками на сетевых дисках. Но, разумеется, сначала выясните, чем вам такое может грозить.

© 1998–2024 Alex Exler
26.01.2017

Комментарии 43

К сожалению, сейчас ни один из указанных способов (даже в комментариях) не работает. Dropbox лихо определяет, что используется сетевая папка и отказывается переносить её расположение. 😒
Dan
07.06.18 20:08
0 0

Ну зачем же такие танцы с бубном, чтобы выстрелить себе в ногу? Можно просто пропатчить одну-единственную системную функцию, чтобы она всегда возвращала локальный статус папки приложению Dropbox.

А ещё лучше посидеть и подумать, зачем там вставили эту проверку. Если вы не в курсе, в популярных сетевых файловых системах с синхронизацией файловых блокировок между клиентами всё очень печально (они не для множественного использования объектов создавались, и даже самой операции блокировки по сети долгое время не имели). Кроме того, NAS, в большинстве случаев, работают на Linux/BSD, а следовательно, за общие с Windows папки там отвечает библиотека samba, которая по функциональности (и из-за соображений совместимости) не совпадает с родной реализацией Windows (на досуге полезно будет почитать маны и помедитировать). Кроме того, вы, скорее всего, не знаете, как её решил настроить производитель NAS — может быть, там вся синхронизация отключена целиком. «Кто же такую глупость сделает?» — спросите вы. Я вот легко представляю, как после криков покупателя, у которого при попытке проиграть с NAS киношку на двух телевизорах всё дико тормозит (потому что встроенные в прошивку кривые плееры зачем-то блокируют доступ к файлу, что в некоторых случаях приводит к необходимости синхронизации «в лоб», с задержкой для каждого запроса каждого клиента), китаец, собирающий прошивку, отключает целиком блокировки от греха подальше (потому что ему очевидно, что ни один разумный человек пользоваться техникой потребительского класса для атомарных операций над ценной информацией не будет).

Точно так же мне легко представить, как после жалобы клиента со сложной домашней сетью с удалёнными дисками и прочим хозяйством на неправильную работу Dropbox, там чешут голову, внимательно читают MSDN и приходят к выводу, что для сетевых папок они ничего гарантировать не могут, после чего и появляется обсуждаемая проверка.

В описываемой конфигурации (один компьютер и один сетевой накопитель с терабайтом селфи с прогулок, используемый только с этого компьютера), возможно, всё будет хорошо из-за локального контроля блокировок на клиенте. (Возможно. По крайней мере, если NAS не захочет сотворить что-то с файлами самостоятельно или по команде пользователя.) А вот если вашим советам последует кто-то, активно делящий файлы между несколькими компьютерами, жди беды. Могут и данные пропасть, и трудно понимаемые глюки появиться (типа жрущей трафик бесконечной циклической синхронизации рассинхронизировавшегося куска, из-за которой все остальные файлы ждут в очереди и не обновляются). Вредно, знаете ли, своими руками систему в состояние неопределённости вводить.
27.01.17 18:54
0 0

А если уж хочется что бы они сразу "шарились" по сети, тогда лучший вариант это запустить dropbox на nas.



Собственно так и делаю;)



А вместо subst, лучше mklink. Так как результат subst после перезагрузки сбрасывается. И общее замечание к методу mklink (subst), когда мы что то делаем что не гарантируется и это связано с объективными причинами (есть шанс что dropbox не получит событие об изменениях и изменение не будет отражено в dropbox), то зачем стрелять себе в колено;)
27.01.17 08:33
0 0

iorlov: А если уж хочется что бы они сразу "шарились" по сети, тогда лучший вариант это запустить dropbox на nas. Собственно так и делаю;)

Все правильно, только не все NAS имеют приложения для работы с Dropbox. Я очень сильно удивился, когда узнал, что мой QNAP такое приложение не имеет. Теоретически там все-таки можно его заставить, но это через дикую задницу, с помощью скриптов и так далее.
27.01.17 09:09
0 0

А почему не сделать iscsi диск? Да, данные не будут расшаренны сразу как это было был с сетевыми диском, но с другой стороны iscsi это именно полноценный диск который хранится с резервирование на внешнем накопителе (nas)
27.01.17 08:20
0 0

iorlov: А почему не сделать iscsi диск? Да, данные не будут расшаренны сразу как это было был с сетевыми диском, но с другой стороны iscsi это именно полноценный диск который хранится с резервирование на внешнем накопителе (nas)

Объяснять чайникам, как сделать iscsi-диск - думаю, значительно сложнее, чем они сделают по данной инструкции 😉
27.01.17 09:07
0 0

Вообще конечно совет опасный, если даже не сказать, вредный.
Проблема тут не у DropBox, а в том что сама Windows не гарантирует доставку оповещений об изменениях на нелокальных файловых системах (даже если это родная NTFS). Таким образом это вопрос чистой удачи в какой конкретно момент начнется синхронизация с облаком.
27.01.17 04:36
0 0

Антонионий: Таким образом это вопрос чистой удачи в какой конкретно момент начнется синхронизация с облаком.

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

Антонионий: даже не сказать, вредный.


полностью поддерживаю.

Если не хочется в ПК иметь HDD, а хочется диск с резервированием, то лучший вариант это iscsi. или ssd в зеркале;) но iscsi дешевле если есть nas.
27.01.17 08:36
0 0

А если теперь на НАСе отредактировать файл с другого девайса - дропбокс это увидит?
27.01.17 01:21
0 0

rnkbb:
А если теперь на НАСе отредактировать файл с другого девайса - дропбокс это увидит?


Сразу видит, я это проверял.
27.01.17 09:05
0 0

rnkbb: А если теперь на НАСе отредактировать файл с другого девайса - дропбокс это увидит?


Ну при следующем полном рескане точно увидит 😄
27.01.17 04:38
0 0

Как тяжело и вычурно в винде интерперетируются хард- и симлинки 😉


gsp
26.01.17 20:03
0 0

gsp:
Как тяжело и вычурно в винде интерперетируются хард- и симлинки




Почему? Можно с помощью mklink.
27.01.17 09:04
0 0

о, как интересно, спасибо! я в своё время пыталась заставить синхронизатор от китайского сервиса Baidu скушать папку на сетевом диске. и нашла деффачковое решение 😄 в 8 винде есть папки/библиотеки по видам файлов, которые открываются в Моём компьютере - документы, музыка, видео и тыды. Байду их видит и считает локальными. А в свойствах папки можно указать новое сетевое расположение, но он их тогда не перестанет считать локальными. А я один хрен стандартными этими папками не пользуюсь, заюзала две из них под свои цели.
26.01.17 15:57
0 0

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

Так что из-за этого нюанса специально для subst есть в Windows фича. Цитирую из своих заметок:

В разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices создайте строковый параметр (String Value) с именем диска, например G: В значение параметра введите путь к каталогу в формате \??\<путь к каталогу>, например \??\C:\Windows Перегрузите систему, чтобы требуемый диск создался.

Весь этот гемор из статьи, к счастью, не явялется необходимым:"Теперь важный момент по поводу загрузки Dropbox. Теперь, когда мы папку Dropbox поместили на сетевое хранилище, вам придется убрать в настройках Dropbox автоматическую загрузку при старте системы. Потому что почти наверняка он будет стартовать раньше файла mystart.cmd, при старте не обнаружит диск F и начнет вам кричать, что шеф, все пропало, диск пропал, как жить теперь, как жить. И вам придется программу закрыть. А потом запустить заново - после того, как диск F появится. "


26.01.17 14:22
0 0

mgsxx: В разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices создайте строковый параметр (String Value) с именем диска, например G: В значение параметра введите путь к каталогу в формате \??\<путь к каталогу>, например \??\C:\Windows Перегрузите систему, чтобы требуемый диск создался.

Да, все заработало, спасибо большое.

Эта подстановка не работает, когда даешь сетевой путь - то есть \??\NAS\ParaDrop, однако сработала, когда я задал ее через подключенный сетевой диск, то есть \??\T:\ParaDrop.

В системе подключенный таким образом диск все равно именуется "Отключенное сетевое устройство", однако все работает.
27.01.17 10:11
0 0

mgsxx: Так что из-за этого нюанса специально для subst есть в Windows фича. Цитирую из своих заметок: В разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices создайте строковый параметр (String Value) с именем диска, например G: В значение параметра введите путь к каталогу в формате \??\<путь к каталогу>, например \??\C:\Windows Перегрузите систему, чтобы требуемый диск создался.

Ценно, спасибо.
27.01.17 09:03
0 0

Windows 7 умеет даже так:

mklink /d C:\Dropbox\FromNAS \\NAS\Share
26.01.17 11:32
0 0

dredkin:
Windows 7 умеет даже так:

mklink /d C:\Dropbox\FromNAS \\NAS\Share


Windows10 такое сделать не дала - написала "Недостаточно привелегий для выполнения этой операции". Хотя я там под админом.


26.01.17 12:03
0 0

dredkin:
Windows 7 умеет даже так:

mklink /d C:\Dropbox\FromNAS \\NAS\Share


То есть Dropbox при этом установлен в C:\Dropbox?
26.01.17 11:56
0 0

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



А по поводу всех этих хитрых танцев с бубном скажу так: Самс не проверял, но почти у верен, что сработает: Алекс, погугли команду mklink /d.

Скорее всего, она поможет избежать многих телодвижений и значительно упростить инструкцию.



P/S/ Только осторожнее с удалением симлинков: их надо удалять не через файл-менеджер (глупый фм решит, что перед удалением папку сначала надо ее очистить), а из командной строки командой rmdir.
26.01.17 11:14
0 0

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



А по поводу всех этих хитрых танцев с бубном скажу так: Самс не проверял, но почти у верен, что сработает: Алекс, погугли команду mklink /d.

Скорее всего, она поможет избежать многих телодвижений и значительно упростить инструкцию.



P/S/ Только осторожнее с удалением симлинков: их надо удалять не через файл-менеджер (глупый фм решит, что перед удалением папку сначала надо ее очистить), а из командной строки командой rmdir.


Да, совсем забыл о ней. Спасибо, сейчас протестирую и поправлю.
26.01.17 11:24
0 0

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

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

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

Так вот: попадающиеся мне верси трояна без вопросов дотягивались ло инфы расположенные на локальных дисках (с поправкой на доступ пользователя контролируемый осью), а также до сетевых ресурсов, которые были "замэплены", то есть имели символьное имя типа F:\. А вот сетевые ресурсы типа \\шара оставались нетронуты.



Так что удобство удобством, но если DROPBOX предполагается имспользовать как бэкап, особенно единственный, уникальных данных, я бы советовал принять это во внимание.




26.01.17 11:08
0 0

Так в том-то и дело, что никакого "соответствующего приложения" нет(( та шняга, что от мейл.ру так же не хочет дружить с насами. Вот и интересуюсь, что можно предпринять.
26.01.17 10:56
0 0

Интересно, в Дропбоксе уже заведена такая бага - проверять на сетевое устройство не при подключении, а при старте приложения 😄?
26.01.17 10:43
0 0

Алекс, вопрос по теме: а подружить NAS и облако мейлрушное?
26.01.17 10:22
0 0

uzernik:
Алекс, вопрос по теме: а подружить NAS и облако мейлрушное?


Через соответствующее приложение, ясный пень.
26.01.17 10:35
0 0

А почему на втором шаге нельзя папку \\NAS\Backup\ForDropbox просто подключить как сетевой диск F и обойтись без всех этих автозагрузок ?
26.01.17 10:22
0 0

Ivan75:
А почему на втором шаге нельзя папку \\NAS\Backup\ForDropbox просто подключить как сетевой диск F и обойтись без всех этих автозагрузок ?


Да я вроде написал, почему. Дропбокс не даст указать этот диск в качестве расположения.
26.01.17 10:35
0 0

Мой NAS фирмы Synology умеет работать с Dropbox-ом напрямую, без участия компьютера. Так и пользуюсь - Dropbox на NAS-е синхронизирует папку Dropbox целиком и даёт к ней доступ по локальной сети, а Drоpbox на компьютерах - только избранные папки.
26.01.17 10:10
0 0

diamant: Мой NAS фирмы Synology умеет работать с Dropbox-ом напрямую, без участия компьютера.

Совершенно верно. И мой умеет. Но это не все умеют.
26.01.17 10:34
0 0

Алекс,

Проверьте поведение 10-ки и дропбокса с отключённым НАС-ом. Минус subst в том, что при недоступности сетевого ресурса операционка постоянно пытается переподсоединиться и нехило так вешает систему. Может, в 10-ке что-то изменили и всё работает без подвисаний, но проверить стоит.

Удачи.
26.01.17 09:42
0 0

omcadmin: Проверьте поведение 10-ки и дропбокса с отключённым НАС-ом. Минус subst в том, что при недоступности сетевого ресурса операционка постоянно пытается переподсоединиться и нехило так вешает систему. Может, в 10-ке что-то изменили и всё работает без подвисаний, но проверить стоит.

Ага, проверю. Но у меня NAS подключен всегда.
26.01.17 10:33
0 0

Я бы в такой ситуации поставил Dropbox непосредственно на NAS сервер. Не надо переиндексировать при запуске компьютера, можно выключать компьютер и все равно сервер стянет файлы с дропбокса, которые туда бросают другие устройства, ну и так далее.
26.01.17 09:40
0 0

Ogra: Я бы в такой ситуации поставил Dropbox непосредственно на NAS сервер.

Само собой. Но не все NAS это умеют.
26.01.17 10:33
0 0