Синхронизация папок между двумя компьютерами через интернет

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

Обновлено:

Содержание

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

DevProxy может связать две папки на двух ваших компьютерах. Клиент на каждой машине следит за своей разрешённой папкой и передаёт изменения второй стороне. Изменения идут в обе стороны, поэтому файл, созданный на ноутбуке, появится дома, а исправление дома дойдёт до ноутбука. Оба компьютера должны быть включены и подключены к интернету, пока вы ждёте обмена.

Синхронизация не заменяет резервную копию: она намеренно распространяет и удаления. Храните важные архивы отдельно, например на внешнем диске или в резервном сервисе.

Что понадобится

  • Два компьютера, на которых можно установить клиент DevProxy.
  • Отдельные папки для проверки, сначала пустые. На первом компьютере назовите её sync-a, на втором sync-b.
  • Аккаунт DevProxy и ключ подключения. Регистрация, установка и запуск программы описаны в руководстве «Как начать пользоваться DevProxy».
  • Для каждого компьютера своя запись устройства и свой ключ автоматизации. Как получить их, разберём ниже. Файл устройства и ключ первого ПК на второй не копируют.

Подготовьте оба компьютера

В кабинете откройте раздел «Ключи доступа» и перейдите на вкладку «Автоматизация». Для каждого компьютера укажите понятное название и нажмите «Зарегистрировать». Сделайте это два раза, по одному устройству на каждую машину.

Регистрация компьютера в кабинете DevProxy
Регистрация компьютера в кабинете DevProxy

После регистрации скачайте файл настройки устройства. На первом компьютере положите его рядом с devproxy.yml под именем devproxy-device.json. Повторите то же на втором компьютере, используя файл, скачанный для второго устройства. Не копируйте файл первого компьютера на второй: сервер должен различать две машины.

В блоке ключей выбранного устройства создайте ключ автоматизации. На обоих компьютерах отметьте «Запуск и остановка» и «Создание и изменение», а на втором ещё «Коннекторы». Выберите пространство, в котором будет канал синхронизации.

Сохраните показанный ключ в текстовый файл owner.key в закрытой папке настроек этого компьютера. На Windows это обычно %APPDATA%\DevProxy, на Linux и macOS ~/.config/devproxy. Создайте файл в текстовом редакторе, вставьте только ключ строго этого устройства и сохраните без лишних пробелов по краям. Не вставляйте ключ в командную строку, сценарий, снимок экрана или общий документ.

Оставьте доступ к файлу только владельцу. В свойствах файла на Windows снимите доступ для остальных пользователей. На Linux или macOS после сохранения выполните команду, в которой нет самого секрета:

chmod 600 ~/.config/devproxy/owner.key

Теперь разрешите папку на каждом компьютере. Сначала создайте обе отдельные папки sync-a и sync-b: команда разрешения только записывает существующий каталог и не создаёт его. Клиент на время этой подготовки лучше остановить. Укажите полный путь и отдельную метку:

devproxy roots add --path "C:\DevProxyTest\sync-a" --label "sync-a"

На втором компьютере используйте путь к sync-b. Команда напечатает длинный номер вида 3475711d-913b-42d2-98d1-c63064b3e9ae. Это rootId, то есть номер разрешённой папки. Сохраните номер для первого компьютера, а второй номер для второго. В настройках синхронизации нужен именно rootId, а не путь к каталогу.

Создайте первую сторону

Откройте на первом компьютере файл devproxy.yml и добавьте канал синхронизации. Остальные записи, если они уже есть, сохраните. Ниже показаны только нужные части настройки:

server: https://control.devtunnels.ru
token: ВАШ_КЛЮЧ_ПОДКЛЮЧЕНИЯ
reconnect: true
tunnels:
  - kind: http
    name: sync
    purpose: directorySync
    rootId: ROOT_КОМПЬЮТЕРА_A
    role: creator
automation:
  enabled: true
  deviceFile: devproxy-device.json
  ownerStartupKeyFile: owner.key

purpose: directorySync означает двустороннюю синхронизацию каталога. Строка role: creator закрепляет за этим компьютером первую сторону, а rootId указывает на уже разрешённую папку. Полный путь в этом месте не пишется.

Запустите клиент командой devproxy start. В кабинете откройте «Туннели». У канала с пометкой «Синхронизация папок» появится поле «Код для второго компьютера». Скопируйте длинный код целиком. Это идентификатор канала, по которому второе устройство присоединится к паре.

Запускать создателя нужно первым: без него пара ещё не готова. Один канал принимает только один второй компьютер.

Подключите второй компьютер

На втором компьютере добавьте коннектор: так в настройках называется вторая сторона пары. Она подключится по коду из кабинета, а папку выберет по своему rootId.

server: https://control.devtunnels.ru
token: ВАШ_КЛЮЧ_ПОДКЛЮЧЕНИЯ
reconnect: true
connectors:
  - kind: tcp
    host: sync-connector
    purpose: directorySync
    rootId: ROOT_КОМПЬЮТЕРА_B
    role: connector
    pairChannelId: КОД_ИЗ_КАБИНЕТА
automation:
  enabled: true
  deviceFile: devproxy-device.json
  ownerStartupKeyFile: owner.key

sync-connector в строке host здесь служит именем записи на втором ПК. Подставьте номер папки второго компьютера и код, скопированный в «Туннелях». Сохраните изменения и запустите клиент командой devproxy start. Откройте в браузере адрес локального монитора из консоли и перейдите на вкладку Directory sync. Названия этой вкладки сейчас английские. Состояние Waiting for the other device исчезнет после соединения сторон, затем появится Comparing folders, Syncing или Up to date.

Обе программы должны оставаться запущенными: выключенный компьютер не получает изменения. После запуска клиент продолжит с сохранённого состояния. Не удаляйте служебные файлы синхронизации и не очищайте её состояние ради «перезапуска начисто».

Проверьте обмен в обе стороны

Сначала убедитесь, что в обеих папках нет файлов и панель показывает одну связанную пару. Создайте в sync-a обычный файл from-a.txt с текстом Первый компьютер. Дождитесь, пока такой файл появится в sync-b.

Теперь откройте from-a.txt уже на втором компьютере, допишите слово изменено и сохраните файл. После следующего обмена проверьте его на первом компьютере. Затем создайте в sync-b файл from-b.txt. Он должен появиться в sync-a.

Новая версия появляется после следующего прохода синхронизации. Не создавайте вторую копию с тем же именем и не перезапускайте оба клиента по кругу. Откройте Directory sync, посмотрите число файлов и ожидающих операций, затем проверьте путь и права доступа к папке.

Если изменили один файл с двух сторон

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

Сложнее, если вы изменили один файл на обоих компьютерах до того, как они успели обменяться правками. Возникает конфликт: две версии одного файла. DevProxy сохраняет обе, а выбрать нужный текст придётся вам. Программа не объединяет такие правки сама.

В Directory sync в таблице конфликтов нажмите Download this version у нужной версии и сохраните копию под понятным именем. Сравните её с рабочим файлом. Выберите нужный текст сами и внесите его в рабочий файл вручную. Не удаляйте конфликтную копию до проверки. По умолчанию такие служебные копии хранятся 30 дней; истечение этого срока не удаляет исходные файлы.

Удаление и отключённый компьютер

Удаление файла распространяется по правилу владельца. Если файл удалён на устройстве, где он впервые появился, удаление должно дойти до второй копии. Метка удаления не даёт давно отключённому компьютеру просто вернуть старую версию после повторного подключения.

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

Если корневая папка стала недоступна, переименована или её содержимое не удаётся прочитать, синхронизация приостанавливается. Она не должна принимать пустой результат за удаление всех файлов. Верните каталог на прежний путь или восстановите доступ и запустите клиент снова. Не создавайте новую пустую папку с другим путём, пока не разобрались со старой.

Чем это отличается от папки по ссылке

«Папка по ссылке» решает другую задачу. Один компьютер отдаёт выбранные файлы посетителю, а получателю не нужно устанавливать клиент и разрешать свою папку. В синхронизации участвуют две стороны, каждая со своим клиентом и своей разрешённой папкой. Они не просто скачивают файлы, а обмениваются изменениями.

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

Если что-то не получилось

  • `Waiting for the other device` не меняется. Запустите второй клиент и проверьте, что в pairChannelId вставлен код именно этого канала, без обрезанного конца.
  • `Comparing folders` остаётся надолго. Проверьте, что обе папки существуют и доступны пользователю, от имени которого запущен клиент, а в rootId указан номер папки, а не её путь.
  • Ошибка появляется вместо обмена. Остановите изменения в папке, прочитайте состояние в Directory sync и сверьте настройки устройства, ключа и канала. Не удаляйте служебное состояние и конфликтные копии до резервного сохранения.
  • Появился конфликт. Скачайте нужную версию через Download this version, сравните обе стороны и приведите рабочий файл к нужному содержимому вручную.
  • Чужой компьютер не подключается. У одного канала синхронизации может быть только один коннектор. Проверьте, что к паре не присоединяли третье устройство и не перепутали файлы устройств.
  • Компьютер был выключен. Включите его и дождитесь запуска клиента. Изменения могут прийти не сразу. Если обе стороны меняли один путь в автономном режиме, ожидайте конфликт, а не выбор последней версии по часам.

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

Попробуйте бесплатно

Бесплатного тарифа хватает на все сценарии из инструкций.

Создать аккаунт

Другие инструкции