Вопрос

я смотрел на DropBox Мы с клиентом Mac в настоящее время изучаем возможность реализации аналогичного интерфейса для другого сервиса.

Как именно они взаимодействуют с искателем?Я очень сомневаюсь, что эти объекты, представленные в папке, являются реальными документами, загружаемыми при каждой загрузке?Они должны динамически загружаться по мере необходимости.Так как же можно отобразить эти элементы в Finder, не имея реальных объектов файловой системы?

Кто-нибудь знает, как это достигается в Mac OS X?

Или какой-нибудь указатель на Apple API или другие проекты с открытым исходным кодом, которые имеют аналогичную интеграцию с поисковиком?

Это было полезно?

Решение

Два предложения:

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

Другие советы

Dropbox не работает ни на MacFUSE, ни на WebDAV, хотя это может быть идеальным решением для достижения ваших целей.

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

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

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

На самом деле Dropbox - это дополнительная хитрость, которая помечает элементы в папке Dropbox текущим статусом синхронизации. Но это не то, о чем вы спрашиваете здесь.

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

Dropbox, вероятно, использует FSEvents для отслеживания изменения в файловой системе. Это отличный API и может даже связывать изменения, которые произошли, когда ваше приложение не работало. Это тот же API, который использует Spotlight. Приложение menubar, вероятно, выполняет само наблюдение (например, перезапуск может исправить зависание загрузки, например).

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

Dropbox на клиенте написан на python. Клиент, кажется, использует базу данных sqlite3 для индексации файлов. Я полагаю, Dropobox разбил файл на куски, чтобы уменьшить использование полосы пропускания. Кстати, если два человека имеют один и тот же файл, даже если они не знают друг друга, сервер может оптимизировать и избежать передачи файла больше раз, копируя его только на стороне сервера

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

Вы также можете попробовать File Conveyor . Это демон Python, способный мгновенно обнаруживать изменения FS (в Linux через inotify , в OS X через FSEvents ), обрабатывать файлы и , синхронизируя их по одному или нескольким направлениям.

Поддерживаемые протоколы: FTP, SFTP, Amazon S3 (также поддерживается CloudFront), Rackspace Cloud Files. Может быть легко продлен. Использует django-хранилища .

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top