Как работает синхронизация файлов в программе для компьютера

На Хабре периодически рассказывают о новых инструментах для синхронизации данных. Это интересная тема. Такие программы используются:

  • для синхронизации файлов на разных устройствах,
  • дедупликации,
  • резервного копирования,
  • сжатия.

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

rsync

Как известно, инструмент для быстрой синхронизации файлов rsync разработан австралийским программистом Эндрю Триджеллом по кличке Тридж в 1996 году для его кандидатской диссертации.

Суть алгоритма заключается в том, что файл разбивается на куски фиксированного размера, для каждого из них вычисляется MD4-хеш и скользящий хеш (rolling hash). Хеши отправляются второму компьютеру для сверки. В упрощённом виде схема выглядит так:

Этот алгоритм и концепция скользящего хеша используются во многих программах для синхронизации файлов, включая rdiff, librsync (Dropbox), sftp, macOS 10.5+, zsync (Ubuntu и другие Linux-дистрибутивы), rclone и др.

Синхронизация данных (файлов и папок) через сеть интернет.

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

CDC

Главным улучшением стало изобретение блоков переменного размера, когда границы скользящего окна не смещаются по биту, а устанавливаются в зависимости от содержимого файла. Другими словами, если у нас в битовом потоке попадается одинаковый фрагмент до 64 бит, то рамки скользящего окна сдвигаются на границу этого фрагмента. То есть разбиение на блоки происходит в зависимости от контента. Так появился алгоритм CDC (Content Defined Chunking), который благодаря своей простоте и эффективности стал по-настоящему гениальным изобретением.

Для сравнения, вот схема работы CDC:

CDC решает «проблему сдвига границы», показанную на КДПВ.

А теперь мы переходим к самому интересному…

Помните, был такой игровой сервис Stadia, который повторил судьбу десятков замечательных проектов компании Google, прибитых на взлёте? Сегодня он встречает похоронной надписью на главной странице:

Проект закрылся 18 января 2023 года…

Главная инновация Stadia состояла в трансляции видео с серверов Google на тонкие клиенты пользователей с минимальной задержкой. Говорят, работало фантастически. И просто удивительно, что Google решила убить такой перспективный проект.

Так или иначе, одной из внутренних технологий Stadia была эффективная синхронизация данных между Windows-серверами (большинство игр работает под Windows) и облачными Linux-инстансами для разработчиков. Сами разработчики Stadia первоначально использовали обычный scp , но он всегда копировал полные файлы без режима копирования «дельты» изменений, и в нём не было быстрого сжатия. Поэтому разработчики Stadia написали внутренние инструменты, которые решают эту проблему.

Allway Sync автоматическая синхронизация файлов между двумя компьютерами

CDC File Transfer

В репозитории CDC File Transfer выложены две утилиты для синхронизации и стриминга файлов между машинами Windows → Windows или Windows → Linux. Это cdc_rsync и cdc_stream , соответственно. Обе используют упомянутый ранее алгоритм Content Defined Chunking (CDC) для максимально эффективного сжатия с учётом контента.

И теперь все желающие могут без проблем использовать эти инструменты для своих личных нужд, ставить на свои серверы и интегрировать в свои проекты. Чем многие не преминули воспользоваться: за несколько месяцев у проекта уже 75 форков и более 2700 звёзд на Github.

▍ cdc_rsync

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

Алгоритм удалённой сверки файлов основан на CDC, а по внутренним тестам Google он работает примерно в 30 раз (!) быстрее, чем rsync . Причины такого ускорения заключаются в значительной оптимизации по сравнению со стандартным алгоритмом rsync, который при сравнении копий файла использует скользящее окно фиксированного размера.

Эта оптимизация сильно влияет на общее время синхронизации файлов. На следующей диаграмме из репозитория показаны результаты реального тестирования cdc_rsync и линуксового rsync под Cygwin в Windows.

В целом, cdc_rsync синхронизирует файлы примерно в три раза быстрее, чем rsync под Cygwin. В качестве тестовых данных использовались девелоперские билды игры общим размером 40-45 ГБ. На трёх билдах, вероятно, потерялись какие-то файлы, что резко увеличило время синхронизации.

Читайте также:
Брандмауэр firewall это программа

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

▍ cdc_stream

В свою очередь, cdc_stream — это инструмент для потоковой передачи файлов и каталогов с Windows на Linux. Концептуально он похож на sshfs , но оптимизирован для скорости чтения. Утилита не поддерживает запись файлов обратно из Linux в Windows. Каталог Linux доступен только для чтения.

Вот как работает программа:

А ниже сравнительные графики производительности: время запуска игры от начала операции до появления меню на экране. Тестировались разные игры для Stadia, но в целом процесс демонстрирует скорость потоковой передачи любых файлов:

Судя по проведённым тестам, cdc_stream копирует файлы примерно в 2–5 раз быстрее, чем sshfs . Как можно понять из объяснений выше, эта разница обеспечена преимуществом CDC над стандартным алгоритмом rsync. Для эффективного диффиринга используется тот же алгоритм на основе CDC, что и в программе cdc_rsync .

Если файл изменился на Windows, то в систему Linux передаются только различия (дельта). Это происходит в момент считывания файла под Linux. Остальное считывается из кэша. Изменения в файлах Windows отражаются в Linux с задержкой от 0,5 с (плюс примерно 0,7 с на каждый гигабайт).

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

Более подробно об использовании инструментов cdc_rsync и cdc_stream и необходимой конфигурацией SSH и SFTP см. в документации на Github, а также в документации/комментариях внутри кода. В целом, cdc_rsync используется аналогично scp или rsync , с таким же синтаксисом, понимает стандартные виндовые заменители типа * и ? :

Локальная синхронизация с Windows на Windows рекурсивно ( -r ) с визуальным индикатором прогресса ( -v ):

cdc_rsync C:pathtoassets* C:pathtodestination -vr

Примечание. Инструменты cdc_rsync и cdc_stream — не единственные, в которых реализован алгоритм разбиения на блоки с учётом контента (CDC). Его использует restic и другие продвинутые инструменты для синхронизации и резервного копирования. В последние годы оптимальной реализацией CDC считалась FastCDC с поддержкой Gear-based CDC (GC) со скользящими хешами для разного размера окон, что повышает производительность вычислений (с оптимизациями 2020 года), есть версии на Rust, Python, C и др.

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

Разработчики пишут, что софт сделан на основе FastCDC с учётом конкретной сферы применения: максимально быстрой инкрементальной синхронизации файлов. И кажется, что это наследие Stadia — действительно лучший вариант для синхронизации/стриминга с Windows на Linux.

По крайней мере, крах Stadia принёс какую-то пользу обществу.

Источник: habr.com

Syncthing — синхронизация файлов Windows, Linux, MacOS и Android

Синхронизация файлов в Syncthing

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

В этом обзоре о том, как начать использовать Syncthing для синхронизации файлов между компьютерами и мобильными устройствами в локальной сети и через Интернет с использованием безопасного протокола TLS, базовых настройках и возможностях инструмента.

Загрузка и установка

Все файлы для загрузки Syncthing для разных платформ, а также ссылки на Google Play и F-Droid доступны на официальном сайте https://syncthing.net. Все консольные версии можно также загрузить со страницы GitHub. Если требуется версия для iPhone или iPad, можно использовать стороннее приложение Möbius Sync, доступное в App Store — оно сделано специально для Syncthing, но не полностью бесплатное.

Учитывайте, что в базовом варианте Syncthing для Windows и Mac — консольный инструмент, доступ к параметрам которого осуществляется через веб-интерфейс.

Если вы не готовы вручную настраивать автоматический запуск консольного приложения и работать с ним через браузер, можно загрузить готовые сборки с графическим интерфейсом и собственными параметрами — SyncTrayzor и syncthing-macos, предлагаемые в разделе «Integrations» на официальном сайте: эти варианты больше похожи на привычные программы и могут быть более удобными для начинающих пользователей.

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

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

При запуске консольного инструмента будет запущена консоль и браузер с веб-интерфейсом управления (по умолчанию доступен по адресу 127.0.0.1:8384).

Читайте также:
Примерная программа технология начальная школа

Веб-интерфейс Syncthing

Примечание: если вам потребуется настроить автоматический запуск консольного Syncthing при входе в Windows без появления окна консоли и автоматического открытия браузера, используйте планировщик заданий (или создание своей службы) и запуск syncthing.exe с параметрами

—no-console —no-browser

При запуске SyncTrayzor — в области уведомлений появится значок быстрого доступа, а также откроется окно приложения: тот же веб-интерфейс, но в «обертке» с собственными дополнительными настройками приложения.

Главное окно SyncTrayzor

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

Далее — о базовых действиях для первоначальной настройки синхронизации, если какие-то шаги будут не до конца ясными, ниже также есть видео, где процесс показан наглядно:

  1. Установите/запустите Syncthing (или SyncTrayzor) на другом устройстве. При нахождении двух устройств в одной локальной сети, они «увидят» друг друга и можно будет просто нажать кнопку «Добавить устройство» и нажать по нужному ID устройства «рядом» в локальной сети, а также подтвердить добавление на добавляемом устройстве. Добавить новое устройство в SyncThing
  2. Если уведомлений о новом устройстве не появляется, или для добавления устройства в сети Интернет используйте кнопку «Добавить устройство» и ID или QR-код (в случае подключения Android смартфона). Получить ID текущего компьютера можно в меню настроек, пункт «Показать ID». Посмотреть ID Syncthing
  3. По умолчанию приложение работает лишь с одной папкой по умолчанию в

C:UsersИмя_пользователяSync

к которой нет доступа у других устройств. Вы можете добавить собственные папки с помощью кнопки «Добавить папку» в веб-интерфейсе. При добавлении рекомендую задать «Ярлык папки», иначе в списке папок для неё будет отображаться уникальный, но не очень читаемый ID. Добавление папки в Syncthing

  • Для предоставления доступа к папке другим подключенным устройствам, нажмите откройте вкладку «Предоставление доступа» окне редактирования свойств нужной папки и включите доступ для нужных устройств. Если синхронизация выполняется через Интернет и требуется шифрование данных, задайте пароль шифрования. Поделиться папкой с другими устройствами в Syncthing
  • На компьютере, которому был предоставлен доступ, появится уведомление о новой общей папке, которое нужно принять. Если был предоставлен доступ к папке Default Folder (По умолчанию), то синхронизация будет автоматически производиться с аналогичной папкой по умолчанию на удаленном компьютере, если к другой папке — потребуется указать путь к локальной папке на нем, данные из которой будут синхронизированы (он может отличаться от пути на исходном компьютере). Подтвердить доступ к новой папке в Syncthing
  • Аналогичным образом можно подключить больше устройств и предоставить доступ к нужным папкам им: не только для компьютеров и ноутбуков, но и для мобильных устройств Android: Syncthing на Android
  • На этом основные необходимые действия для выполнения синхронизации ваших данных выполнены: файлы будут автоматически обновляться до последней версии на всех устройствах, которым предоставлен доступ к соответствующим папкам. Если устройство выключено или отключено от локальной сети или Интернета, данные будут синхронизированы при очередном его включении.

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

    Настройки SyncTrayzor

    • Настроить управление версиями файлов в свойствах общей папки (кнопка «Редактирование папки» — «Управление версиями»).
    • На вкладке «Дополнительно» в окне редактирования папки настроить интервалы сканирования, необходимость синхронизации прав доступа и владельцев NTFS, отправку расширенных атрибутов.
    • В настройках (в веб-интерфейсе) настроить ограничения пропускной способности и другие параметры сети.
    • При использовании SyncTrayzor использовать дополнительные настройки самого приложения, такие как автоматический запуск при входе в Windows, отключение синхронизации при лимитных подключениях, уведомления об измененных и синхронизированных файлах, а также настройки Syncthing — изменение адреса доступа к веб-интерфейсу, приоритет исполняемого процесса и другие.

    Видео инструкция

    Полная документация по использованию и настройке Syncthing (на английском языке) доступна на сайте https://docs.syncthing.net/. В ней вы найдете информацию по параметрам командной строки, доступным настройкам сети, расширенным возможностям настройки синхронизации файлов и другие сведения.

    Источник: remontka.pro

    Синхронизация файлов с помощью OneDrive в Windows

    OneDrive для бизнеса SharePoint Server по подписке SharePoint Server 2019 SharePoint в Microsoft 365 Office для бизнеса Администратор Microsoft 365 Служба Office 365, предоставляемая 21Vianet Служба Office 365, предоставляемая 21Vianet, — для администраторов OneDrive (для работы или учебы) Office.com OneDrive (для дома или персональный) OneDrive (для работы или учебы), предоставляемый 21Vianet OneDrive для Windows Центр администрирования SharePoint SharePoint в Microsoft 365 для малого бизнеса SharePoint, предоставляемый 21Vianet Еще. Меньше

    Важно: С 1 января 2022 года мы прекращаем поддержку определенных классических приложений OneDrive в операционных системах Windows 7, 8 и 8.1. Дополнительные сведения.

    Используя OneDrive, вы можете синхронизировать файлы между компьютером и облаком, чтобы получать доступ к файлам любым способом: с помощью компьютера, мобильного устройства или веб-сайта OneDrive по адресу OneDrive.com. Если вы добавите, измените или удалите файл или папку в своей папке OneDrive, эти же изменения произойдут на веб-сайте OneDrive, и наоборот. Вы можете работать с синхронизированными файлами прямо в проводнике, в том числе в автономном режиме. Любые внесенные изменения будут синхронизированы, как только вы снова установите подключение.

    Читайте также:
    Графические программы для компьютера список

    В этой статье описано, как скачать Приложение синхронизации OneDrive и войти с помощью личной, рабочей или учебной учетной записи, чтобы начать синхронизацию. Если вы используете Приложения Microsoft 365 для бизнеса, вы также можете синхронизировать файлы со своих сайтов SharePoint. Если вы не используете Приложения Microsoft 365 для бизнеса, см. статью Синхронизация файлов SharePoint с помощью приложения синхронизации OneDrive для бизнеса (Groove.exe).

    Примечание: Сведения о синхронизации файлов в macOS см. в статье Синхронизация файлов с помощью OneDrive в Mac OS X.

    Примечание: Дополнительные сведения об использовании OneDrive см. на странице Обучение работе с OneDrive.

    • Установка и настройка
    • Основные моменты при настройке OneDrive
    • Просмотр файлов OneDrive и управление ими

    Ваш браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

    Установка и настройка

    1. Если вы используете Windows 10, на вашем компьютере уже установлено приложение OneDrive — перейдите к шагу 2. Если вы не используете Windows 10 или Office 2016, установите новое приложение синхронизации OneDrive для Windows.
    2. Запустите настройку OneDrive.
      • Если у вас нет учетных записей, подключенных к OneDrive
      • Если у вас уже есть учетная запись, подключенная к OneDrive

      Если у вас нет учетных записей, подключенных к OneDrive

      Если у вас нет учетной записи, подключенной к OneDrive, воспользуйтесь указанными ниже инструкциями для запуска OneDrive.

      1. Нажмите кнопку Пуск, выполните поиск по запросу OneDrive и откройте программу:
        • В Windows 10 выберите OneDrive. Снимок экрана: поиск классического приложения OneDrive в Windows 10
        • В Windows 7 в разделе Программы выберите Microsoft OneDrive. Снимок экрана: поиск классического приложения OneDrive в Windows 7
        • В Windows 8.1 выполните поиск по запросу OneDrive для бизнеса и выберите приложение OneDrive для бизнеса.
        • Когда запустится программа настройки OneDrive, укажите свою личную, рабочую или учебную учетную запись и нажмите кнопку Войти. Снимок экрана: первый экран программы установки OneDrive

        Основные моменты при настройке OneDrive

        В программе настройки OneDrive есть два экрана, на которые нужно обратить внимание.

        • На экране Ваша папка OneDrive нажмите кнопку Далее, чтобы принять расположение папки по умолчанию для файлов OneDrive. Если вы хотите изменить папку, лучше сделать это сейчас, выбрав пункт Изменить расположение. Окно
        • На экране Все ваши файлы доступны в любой момент показано, как помечены файлы: доступны только при работе в сети, доступны локально или всегда доступны. Функция Файлы по запросу позволяет получать доступ к файлам в OneDrive, не скачивая все их на свое устройство с Windows. Нажмите кнопку Далее. Окно

        Примечание: Если вы уже синхронизировали OneDrive для работы и учебы на компьютере (с помощью предыдущего приложения синхронизации) и только что установили приложение синхронизации, вы не увидите надписи Это ваша папка OneDrive или экрана Синхронизировать файлы из OneDrive во время настройки OneDrive. Приложение приложение синхронизации автоматически синхронизируется с тем же расположением папки, которым вы пользовались до этого. Чтобы выбрать папки для синхронизации, щелкните правой кнопкой мыши значок синего облака в области уведомлений на панели задач и выберите Параметры > Учетная запись > Выбрать папки.

        Просмотр файлов OneDrive и управление ими

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

        Снимок экрана: файлы OneDrive для бизнеса в проводнике

        В области уведомлений появится новый белый или синий значок облака (или оба), и ваши файлы будут синхронизироваться с компьютером. При наведении указателя мыши на этот значок появляется надпись OneDrive – [имя_вашего_клиента].

        Клиент синхронизации OneDrive для бизнеса

        Примечание: Contoso — это пример имени, у вас будет отображаться имя вашей организации.

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

        Диалоговое окно добавления учетной записи OneDrive

        Подробнее

        • Как исправить ошибку «Установлена более новая версия OneDrive»
        • Сведения о функции «Файлы по запросу» в OneDrive
        • Резервное копирование папок «Документы», «Изображения» и «Рабочий стол» с помощью OneDrive
        • Выбор папок OneDrive для синхронизации с компьютером
        • Решение проблем с синхронизацией OneDrive

        Дополнительные сведения

        Старый значок OneDrive для бизнеса

        Важно:
        Поддержка старого приложения синхронизации OneDrive для бизнеса в SharePoint Online завершена. Если вы видите этот значок на панели задач, см. эту статью.

        Значок

        Обратитесь в службу поддержки
        Получите помощь по своей учетной записи Майкрософт и подпискам, посетив раздел Справка по учетной записи и выставлению счетов.

        Чтобы получить техническую поддержку, Обратитесь в службу поддержки Майкрософт, введите свою проблему и выберите Техническая поддержка. Если вам по-прежнему нужна помощь, выберитеОбратитесь в службу поддержки, чтобы получить наилучший вариант поддержки.

        Источник: support.microsoft.com

        Рейтинг
        ( Пока оценок нет )
        Загрузка ...
        EFT-Soft.ru