2008-10-09 13 views
10

Tôi đã xem ứng dụng khách DropBox Mac và hiện tôi đang nghiên cứu triển khai một giao diện tương tự cho một dịch vụ khác.Máy khách DropBox Mac hoạt động như thế nào?

Giao diện chính xác với công cụ tìm như thế này chính xác như thế nào? Tôi rất nghi ngờ các đối tượng này được thể hiện trong thư mục là các tài liệu thực tế được tải xuống trên mọi tải? Họ phải tự động tải xuống khi cần. Vậy làm thế nào bạn có thể hiển thị các mục này trong công cụ tìm mà không cần có các đối tượng hệ thống tệp thực?

Có ai biết cách thực hiện điều này trong Mac OS X không?

Hoặc bất kỳ con trỏ nào của Apple API hoặc các dự án nguồn mở khác có tích hợp tương tự với công cụ tìm không?

Trả lời

6

Hai gợi ý:

Cựu sẽ cho phép bạn viết một ứng dụng mà xuất hiện như một hệ thống tập tin và làm tất cả những điều đúng đắn; sau này sẽ cho phép bạn di chuyển mọi thứ phía máy chủ và cho phép người dùng chỉ gắn dịch vụ của bạn dưới dạng chia sẻ tệp.

+0

MacFUSE chính xác là những gì tôi cần. Tôi đã hoàn toàn quên mất nó. Cảm ơn người đàn ông. –

31

Dropbox không được hỗ trợ bởi MacFUSE hoặc WebDAV, mặc dù đó có thể là giải pháp hoàn hảo cho những gì bạn đang cố gắng hoàn thành.

Nếu nó được hỗ trợ bởi những thứ đó, nó sẽ không hoạt động khi bạn không được kết nối, vì cả hai đều dựa vào máy chủ để lưu trữ thông tin thực tế và Dropbox thì không. Nếu tôi bỏ Dropbox (thực hiện thông qua mục trình đơn) và ngắt kết nối từ mạng, tôi vẫn có thể sử dụng các tập tin. Đó là bởi vì các tập tin thực sự được lưu trữ ở đây trên ổ cứng của tôi.

Điều này cũng có nghĩa là các tệp không cần phải "tải xuống trên mọi tải" vì chúng thực sự được lưu trữ trên máy của tôi tại đây. Thay vào đó, chỉ có các vùng đồng bằng được gửi qua dây và ứng dụng Dropbox (chạy ẩn) vá các tệp một cách thích hợp. Đi theo một cách khác, ứng dụng Dropbox sẽ theo dõi các tệp trong thư mục Dropbox và khi chúng thay đổi, nó sẽ gửi các vùng thích hợp đến máy chủ, nó sẽ truyền chúng tới bất kỳ máy khách nào khác.

Thiết lập này có một số ưu điểm đã quyết định: nó hoạt động khi ngoại tuyến, nó nhanh hơn và dễ dàng hơn đối với các ứng dụng khác vì chúng chỉ xem tệp trên đĩa. Tuy nhiên, tôi không có ý tưởng làm thế nào nó đối phó với xung đột hợp nhất (có thể dễ dàng phát sinh với một hoặc nhiều khách hàng ngoại tuyến), mà không phải là một vấn đề nếu máy chủ là bản sao duy nhất và mọi thay đổi chỉnh sửa bản sao trung tâm.

Nơi Dropbox thực sự tỏa sáng là họ có thêm mẹo đánh dấu các mục trong thư mục Dropbox với trạng thái đồng bộ hiện tại của chúng. Nhưng đó không phải là những gì bạn đang yêu cầu ở đây.

Theo như câu hỏi trong tầm tay, bạn chắc chắn nên xem xét MacFUSE và WebDAV, đây có thể là giải pháp hoàn hảo cho vấn đề của bạn. Nhưng cách Dropbox làm việc, với một ứng dụng nền thay đổi các tập tin thực tế trên đĩa, có thể là một sự cân bằng tốt hơn.

+2

Về xung đột, Dropbox dường như sẽ không bao giờ [cố gắng hợp nhất các thay đổi] (https://www.dropbox.com/help/36). Thay vào đó, nó sẽ tạo ra hai tập tin. – mjs

11

Dropbox có khả năng đang sử dụng FSEvents để xem các thay đổi đối với hệ thống tệp. Đó là một API tuyệt vời và thậm chí có thể kết hợp các thay đổi đã xảy ra trong khi ứng dụng của bạn không chạy. Đó là cùng một API mà Spotlight sử dụng. Ứng dụng thanh thực đơn có khả năng thực sự quan sát chính nó (kể từ khi khởi động lại nó có thể sửa các bản tải lên đang được treo, chẳng hạn).

Không có cách nào họ đang sử dụng MacFUSE, vì điều đó sẽ yêu cầu cài đặt phần mở rộng hạt nhân MacFUSE để làm Dropbox làm việc, và vì tôi chắc chắn không cài đặt nó, tôi rất nghi ngờ họ đang sử dụng nó.

2

Với tôi, cảm giác đó giống như hệ thống kiểm soát sửa đổi được sửa đổi nhiều. Nó có tất cả các tính năng: cập nhật các tệp dựa trên vùng đồng bằng, tùy chọn khôi phục hoặc khôi phục các bản sửa đổi cũ của tệp. Nó gần như cảm thấy như họ đang sử dụng git (GitFS?), Hoặc một số hệ thống tập tin mà họ thiết kế.

3

Dropbox trên ứng dụng khách được viết bằng python. Ứng dụng khách dường như sử dụng cơ sở dữ liệu sqlite3 để lập chỉ mục tệp. Tôi cho rằng Dropobox chia nhỏ một tệp thành nhiều phần, để giảm mức sử dụng băng thông. Nhân tiện, hai người có cùng một tệp, ngay cả khi họ không biết nhau, máy chủ có thể tối ưu hóa và tránh chuyển tệp nhiều lần hơn, chỉ sao chép tệp ở phía máy chủ

+0

Nó xuất hiện với tôi rằng nếu hai người có cùng một tập tin, sau đó nó không được tải lên lần thứ hai. Tuy nhiên, điều này phải có nghĩa là các tập tin không được mã hóa trên máy khách, nhưng tài liệu Dropbox gợi ý rằng nó. Lý do của bạn để nghĩ rằng chỉ có một bản sao của cùng một tập tin được bao giờ được lưu trên các máy chủ của Dropbox? – mjs

+2

Drew Houston đã thừa nhận rằng họ làm điều này. Nó được gọi là pc. (Ngoài ra, các tập tin không được mã hóa trên máy khách. Người ta nói rằng chúng được mã hóa trên các máy chủ S3, nhưng chỉ sau khi Dropbox nhận được các tập tin không được mã hóa. dữ liệu) – chacham15

2

Bạn cũng có thể cung cấp File Conveyor một lần thử. Đó là một trình tiện ích Python có khả năng phát hiện ngay các thay đổi FS (trên Linux thông qua inotify, trên OS X đến FSEvents), xử lý các tệp đồng bộ hóa chúng với một hoặc nhiều đích.

Giao thức được hỗ trợ: FTP, SFTP, Amazon S3 (CloudFront cũng được hỗ trợ), Tập tin đám mây Rackspace. Có thể dễ dàng mở rộng. Sử dụng django-storages.

"tệp xử lý": ví dụ: tối ưu hóa hình ảnh, chuyển mã video - điều này ban đầu được hình thành để được sử dụng để gửi nội dung tĩnh tới CDN trong bối cảnh tăng tốc trang web)