Maestral is an open-source Dropbox client written in Python. The project’s main goal is to provide a client for platforms and file systems that are no longer directly supported by Dropbox. This was motivated by Dropbox temporarily dropping support for many Linux file systems but extends to systems that no longer meet Dropbox’s minimum requirement of glibc >= 2.19, such as CentOS 6 and 7.
Currently, Maestral does not support Dropbox Paper, the management of Dropbox teams and the management of shared folder settings. If you need any of this functionality, please use the Dropbox website or the official client.
Maestral uses the public Dropbox API which, unlike the official client, does not support transferring only those parts of a file which changed (“binary diff”). Maestral may therefore use more bandwidth that the official client. However, it will avoid uploading or downloading a file if it already exists with the same content locally or in the cloud.
The focus on “simple” file syncing does come with advantages:
- Smaller App bundle than the official macOS Dropbox app (40 MB vs 420 MB).
- Universal binary which runs natively on Apple Silicon.
- Less memory usage: 100 MB for a medium sized Dropbox on macOS vs 500 MB). The memory usage will depend on the size of your synced Dropbox folder and can be further reduced when running the daemon without a GUI.
- Supports syncing multiple Dropbox accounts by running multiple instances in parallel.
- Does not count towards the three devices limit for basic Dropbox accounts.
Maestral directly uses code from the following projects:
It also would not be possible without the following excellent Python packages:
- Communication between sync daemon and frontends uses Pyro5.
- The command line interface is built with click and uses interactive prompts by survey.
- The Cocoa GUI is built using toga and the macOS app bundle is built using briefcase, both part of the beeware project for writing cross-platform Python applications.
- Credential storage uses system keychains via keyring.
- watchdog allows us to receive local file system events.
- Many more well known libraries that are staples of the Python ecosystem such as requests, sqlalchemy, etc.