dimasic
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору L0T А разница по сравнению с синхронизацией без ссылок какая? Когда внесем изменения в d:\cloud и подключим диск и клиент начнет синхронизацию, что-то поудаляет, что-то куда-то скачает. Или предлагается каждый раз заново указывать клиенту папку синхронизации? Я описывал чистую загрузку дерева папок и файлов в облако. Сразу в конкретную папку. Ну там разово бэкапы залить, кино или фотки. Нарисовался набор из трех командных файлов: один конфигурационный, задает путь к облачной папке и букву диска, а также используется для создания симлинка (один-единственный раз запускается с правами администратора) и два файла для управления линком и виртуальным диском - монтирование и размонтирование. Запускать можно и не из текущей папки, а по полному пути. Особых багов, кажется, не присутствует, но надо погонять в разных вариациях. 0. Складываем командные файлы в рабочую папку, они должны быть в кодировке cp866 (иначе в консоли увидим сообщения из корявок). В config.cmd задаем букву диска (без двоеточия на конце) и путь к облачной папке. Можно указать не корень облака, а существующую подпапку. Затем запускаем config.cmd с администраторскими правами для создания симлинка к виртуальному диску. Путь к папке можно потом менять без администраторских прав, они нужны исключительно на этапе создания симлинка. Остальные файлы запускаются с простыми правами. 1. Создаем виртуальный диск и ссылку: Код: mount.cmd полный-путь-к-папке | (например, mount.cmd c:\archive) При этом файлы и папки из archive попадут в папку %CloudFolder%\archive. Т.е. в подпапку с именем исходной папки. Если синхронизация сразу не началась, перезапускаем клиент или ставим синхронизацию на паузу и потом снимаем ее с паузы. Ждем, когда все зальется в облако. 2. Отключаем синхронизацию: Код: unmount.cmd полный-путь-к-папке | (например, unmount.cmd c:\archive) Сначала отключается виртуальный диск, тем самым защищая файлы от неожиданностей со стороны облака. Затем выдается приглашение отключить синхронизацию папки в клиенте и только после этого продолжить нажатием любой клавиши (для удаления ссылки). Если поспешить и нажать клавишу до отключения синхронизации папки, то ничего сильно страшного не произойдет - клиент всего лишь удалит залитую в облако папку с файлами, но сами файлы на локальном диске останутся нетронутыми. Просто надо будет снова запустить первый командный файл и повторить синхронизацию. Вот как бы и все. Единственное, надо следить, чтобы имя синхронизируемой папки не совпадало с именем папки в облаке, для которой синхронизация отключена. Допустим, у нас там уже есть папка archive и в синхронизации она не участвует. Запускаем на синхронизацию одноименную папку с локального диска - клиент показывает синхронизацию, вроде бы что-то заливает в облако, но файлы в облаке не появляются. Это ничем не грозит, но просто надо внимательней быть. Или модифицировать командные файлы с тем, чтобы в облаке создавалась папка, названная по текущей дате и, возможно, со временем в имени - если есть желание закидывать файлы в облако несколько раз в день. config.cmd Код: @echo off set Letter=z set CloudFolder=c:\users\Юзер\Cloud@Mail.Ru if not exist "%~dp0\%letter%" ( echo Пробуем создать ссылку... mklink /d "%~dp0\%letter%" %letter%: ) if not exist "%~dp0\%letter%" ( echo Программа не сконфигурирована. echo 1. Проверьте настройки config.cmd echo 2. Запустите config.cmd из-под Администратора pause ) | mount.cmd Код: @echo off call "%~dp0\config.cmd" if not exist "%~dp0\%letter%" echo Программа не сконфигурирована & pause & goto :EOF if "%~1"=="" echo Папка не указана & pause & goto :EOF if not exist "%~1" echo Указанная папка не существует & pause & goto :EOF subst %letter%: "%~1" mklink /j "%CloudFolder%\%~n1" "%~dp0\%letter%" pause | unmount.cmd Код: @echo off call "%~dp0\config.cmd" if not exist "%~dp0\%letter%" echo Программа не сконфигурирована & pause & goto :EOF if "%~1"=="" echo Папка не указана & pause & goto :EOF if not exist "%~1" echo Указанная папка не существует & pause & goto :EOF subst %letter%: /d echo Отключите в клиенте синхронизацию папки "%~n1" и завершите его работу. echo На его предупреждение об удалении файлов внимание можно не обращать. echo. echo Продолжайте только ПОСЛЕ отключения синхронизации в клиенте. echo. pause echo Удаление ссылки на папку rmdir "%CloudFolder%\%~n1" pause |
| Всего записей: 805 | Зарегистр. 09-11-2003 | Отправлено: 19:23 12-04-2014 | Исправлено: dimasic, 11:06 13-04-2014 |
|