2019-08-07 19:15:50 +03:00
|
|
|
[![PyPi Release](https://img.shields.io/pypi/v/maestral.svg)](https://pypi.org/project/maestral/)
|
|
|
|
[![Pyversions](https://img.shields.io/pypi/pyversions/maestral.svg)](https://pypi.org/pypi/maestral/)
|
2020-04-24 14:22:29 +03:00
|
|
|
[![Documentation Status](https://readthedocs.org/projects/maestral/badge/?version=latest)](https://maestral.readthedocs.io/en/latest/?badge=latest)
|
2021-03-12 02:22:50 +03:00
|
|
|
[![codecov](https://codecov.io/gh/SamSchott/maestral/branch/master/graph/badge.svg?token=V0C7IQ1MAU)](https://codecov.io/gh/SamSchott/maestral)
|
2019-07-16 14:28:37 +03:00
|
|
|
|
2020-11-10 18:57:20 +03:00
|
|
|
# Maestral <img src="https://raw.githubusercontent.com/SamSchott/maestral/master/src/maestral/resources/maestral.png" align="right" title="Maestral" width="110" height="110">
|
2019-07-16 14:28:37 +03:00
|
|
|
|
2019-06-15 22:57:17 +03:00
|
|
|
A light-weight and open-source Dropbox client for macOS and Linux.
|
2018-11-26 18:50:02 +03:00
|
|
|
|
2018-11-26 18:56:32 +03:00
|
|
|
## About
|
2019-07-16 21:37:21 +03:00
|
|
|
|
2019-07-24 17:12:21 +03:00
|
|
|
Maestral is an open-source Dropbox client written in Python. The project's main goal is to
|
2019-07-16 21:37:21 +03:00
|
|
|
provide a client for platforms and file systems that are no longer directly supported by
|
|
|
|
Dropbox.
|
2018-11-26 18:50:02 +03:00
|
|
|
|
2021-02-15 03:05:07 +03:00
|
|
|
Maestral currently does not support Dropbox Paper, the management of Dropbox teams, and
|
2019-07-16 21:37:21 +03:00
|
|
|
the management of shared folder settings. If you need any of this functionality, please
|
2020-05-07 00:20:28 +03:00
|
|
|
use the Dropbox website or the official client. Maestral does support syncing
|
2020-03-20 03:31:22 +03:00
|
|
|
multiple Dropbox accounts and excluding local files from sync with a ".mignore" file.
|
2019-07-16 21:37:21 +03:00
|
|
|
|
2019-10-04 23:32:24 +03:00
|
|
|
The focus on "simple" file syncing does come with advantages: on macOS, the Maestral App
|
2021-02-22 23:17:07 +03:00
|
|
|
bundle is significantly smaller than the official Dropbox app and uses less memory. The
|
|
|
|
exact memory usage will depend on the size of your synced Dropbox folder and can be further
|
|
|
|
reduced when running Maestral without a GUI.
|
2019-07-11 18:12:37 +03:00
|
|
|
|
2020-05-07 00:20:28 +03:00
|
|
|
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.
|
2020-03-08 02:45:45 +03:00
|
|
|
|
2020-05-26 19:05:43 +03:00
|
|
|
## Warning
|
|
|
|
|
2021-01-13 00:55:35 +03:00
|
|
|
- Never sync a local folder with both the official Dropbox client and Maestral at the same
|
|
|
|
time.
|
2020-05-26 19:05:43 +03:00
|
|
|
- Network drives and some external hard drives are not supported as locations for the
|
|
|
|
Dropbox folder.
|
|
|
|
|
2019-06-15 22:57:17 +03:00
|
|
|
## Installation
|
2019-07-09 19:19:49 +03:00
|
|
|
|
2023-03-13 23:21:48 +03:00
|
|
|
An app bundle is provided for macOS Catalina and higher and can be downloaded from the
|
2021-07-20 17:36:58 +03:00
|
|
|
Releases tab. This app Bundle is also package as a Homebrew cask.
|
|
|
|
|
2021-08-12 14:13:31 +03:00
|
|
|
On other platforms, you can download and install Maestral as a Python package from PyPI or
|
|
|
|
as a Docker image from Docker Hub.
|
2021-07-20 17:36:58 +03:00
|
|
|
|
|
|
|
For more detailed information on the installation, setup and system requirements, please
|
2021-07-29 23:10:08 +03:00
|
|
|
check the [documentation](https://maestral.app/docs/installation).
|
2021-07-20 17:36:58 +03:00
|
|
|
|
|
|
|
### Homebrew
|
2021-08-12 14:13:31 +03:00
|
|
|
|
|
|
|
The official Maestral releases are also available as Homebrew casks. If you have
|
|
|
|
[Homebrew](https://brew.sh) on your system, you can install using:
|
2021-07-20 17:36:58 +03:00
|
|
|
|
|
|
|
```console
|
|
|
|
$ brew install maestral
|
|
|
|
```
|
|
|
|
|
|
|
|
### Python package using PyPI
|
|
|
|
|
2023-04-23 17:33:40 +03:00
|
|
|
Is is recommended to install Maestral inside a virtual environment as follows:
|
2020-05-07 00:20:28 +03:00
|
|
|
|
2019-06-15 22:57:17 +03:00
|
|
|
```console
|
2023-04-23 17:33:40 +03:00
|
|
|
$ python3 -m venv maestral-venv
|
|
|
|
$ source maestral-venv/bin/activate
|
|
|
|
(maestral-venv)$ python3 -m pip install --upgrade maestral
|
2019-06-15 22:57:17 +03:00
|
|
|
```
|
2020-05-07 00:20:28 +03:00
|
|
|
|
2020-02-28 15:22:55 +03:00
|
|
|
If you intend to use the graphical user interface, you also need to specify the GUI option
|
2020-10-08 03:39:02 +03:00
|
|
|
during installation or upgrade. This will install the `maestral-qt` frontend and `PyQt5`
|
|
|
|
on Linux and `maestral-cocoa` on macOS:
|
2020-05-07 00:20:28 +03:00
|
|
|
|
2019-06-25 21:29:01 +03:00
|
|
|
```console
|
2023-04-23 17:33:40 +03:00
|
|
|
(maestral-venv)$ python3 -m pip install --upgrade 'maestral[gui]'
|
2019-06-25 21:29:01 +03:00
|
|
|
```
|
2020-05-07 00:20:28 +03:00
|
|
|
|
2021-07-20 17:36:58 +03:00
|
|
|
### Docker image
|
2021-08-12 14:13:31 +03:00
|
|
|
|
|
|
|
A Docker image is available for x86, arm/v7 (32bit) and arm64 platforms and can be
|
|
|
|
installed with:
|
2021-02-22 23:17:07 +03:00
|
|
|
|
|
|
|
```colsole
|
2021-07-20 17:36:58 +03:00
|
|
|
$ docker pull maestraldbx/maestral
|
2021-02-22 23:17:07 +03:00
|
|
|
```
|
|
|
|
|
2018-12-08 20:05:55 +03:00
|
|
|
## Usage
|
2019-07-09 19:19:49 +03:00
|
|
|
|
2019-07-24 17:12:21 +03:00
|
|
|
Run `maestral gui` in the command line (or open the Maestral app on macOS) to start
|
|
|
|
Maestral with a graphical user interface. On its first run, Maestral will guide you
|
2019-07-16 21:37:21 +03:00
|
|
|
through linking and configuring your Dropbox and will then start syncing.
|
2018-12-08 15:50:42 +03:00
|
|
|
|
2020-10-09 00:33:51 +03:00
|
|
|
<img src="https://raw.githubusercontent.com/SamSchott/maestral-dropbox/master/screenshots/macOS_dark.png" alt="screenshot macOS" width="840"/>
|
2020-10-06 02:38:42 +03:00
|
|
|
<img src="https://raw.githubusercontent.com/SamSchott/maestral-dropbox/master/screenshots/Ubuntu.png" alt="screenshot Fedora" width="840"/>
|
2018-12-08 19:43:39 +03:00
|
|
|
|
2020-10-03 22:14:34 +03:00
|
|
|
### Command line usage
|
2019-07-09 19:19:49 +03:00
|
|
|
|
2019-07-24 17:12:21 +03:00
|
|
|
After installation, Maestral will be available as a command line script by typing
|
2019-08-15 00:20:53 +03:00
|
|
|
`maestral` in the command prompt. Type `maestral --help` to get a full list of available
|
|
|
|
commands. The most important are:
|
2019-08-13 17:24:39 +03:00
|
|
|
|
2019-09-08 18:52:16 +03:00
|
|
|
- `maestral gui`: Starts the Maestral GUI. Creates a sync daemon if not already running.
|
2019-09-15 14:56:07 +03:00
|
|
|
- `maestral start|stop`: Starts or stops the Maestral sync daemon.
|
|
|
|
- `maestral pause|resume`: Pauses or resumes syncing.
|
2020-09-15 17:12:58 +03:00
|
|
|
- `maestral autostart -Y|-N`: Sets the daemon to start on log in.
|
2019-09-15 16:36:34 +03:00
|
|
|
- `maestral status`: Gets the current status of Maestral.
|
2021-02-15 03:05:07 +03:00
|
|
|
- `maestral filestatus LOCAL_PATH`: Gets the sync status of an individual file or folder.
|
2019-09-15 14:56:07 +03:00
|
|
|
- `maestral excluded add|remove|list`: Command group to manage excluded folders.
|
2019-09-15 16:36:34 +03:00
|
|
|
- `maestral ls DROPBOX_PATH`: Lists the contents of a directory on Dropbox.
|
2020-02-28 15:22:55 +03:00
|
|
|
- `maestral notify snooze N`: Snoozes desktop notifications for N minutes.
|
2019-08-13 17:24:39 +03:00
|
|
|
|
2020-05-07 00:20:28 +03:00
|
|
|
Maestral supports syncing multiple Dropbox accounts by running multiple instances
|
|
|
|
with different configuration files. This needs to be configured from the command
|
|
|
|
line by passing the option `--config-name` to `maestral start` or `maestral gui`.
|
2020-02-28 15:22:55 +03:00
|
|
|
Maestral will then select an existing config with the given name or create a new one.
|
|
|
|
For example:
|
|
|
|
|
|
|
|
```console
|
|
|
|
$ maestral start --config-name="personal"
|
|
|
|
$ maestral start --config-name="work"
|
2018-12-02 03:26:41 +03:00
|
|
|
```
|
2020-05-07 00:20:28 +03:00
|
|
|
|
2021-10-03 01:50:13 +03:00
|
|
|
This will start two instances of Maestral, syncing a private and a work account,
|
2021-08-12 14:13:57 +03:00
|
|
|
respectively. Configs will be automatically cleared when unlinking an account. You can
|
|
|
|
list all currently linked accounts with `maestral config-files`. The above setup for
|
|
|
|
example will return the following on macOS:
|
2020-02-28 15:22:55 +03:00
|
|
|
|
|
|
|
```console
|
2021-08-12 14:13:57 +03:00
|
|
|
$ maestral config-files
|
2020-02-28 15:22:55 +03:00
|
|
|
|
2021-08-12 14:13:57 +03:00
|
|
|
Config name Account Path
|
|
|
|
maestral user@gmail.com ~/Library/Application Support/maestral/maestral.ini
|
|
|
|
private user@mycorp.org ~/Library/Application Support/maestral/private.ini
|
2020-02-28 15:22:55 +03:00
|
|
|
```
|
2019-08-14 21:43:25 +03:00
|
|
|
|
|
|
|
By default, the Dropbox folder names will contain the capitalised config-name in braces.
|
|
|
|
In the above case, this will be "Dropbox (Personal)" and "Dropbox (Work)".
|
2019-06-15 22:57:17 +03:00
|
|
|
|
2021-02-22 23:24:31 +03:00
|
|
|
A full documentation of the CLI is available on the
|
2021-09-03 15:14:46 +03:00
|
|
|
[website](https://maestral.app/cli).
|
2021-02-22 23:24:31 +03:00
|
|
|
|
2019-06-15 22:57:17 +03:00
|
|
|
## Contribute
|
2019-07-09 19:19:49 +03:00
|
|
|
|
2020-05-26 19:05:43 +03:00
|
|
|
There are multiple topics that could use your help. Some of them are easy, such as adding
|
2020-10-25 15:28:06 +03:00
|
|
|
new CLI commands, others require more experience, such as packaging for non-macOS
|
2023-03-13 23:17:11 +03:00
|
|
|
platforms. Look out for issues marked with "good first issue" or "help wanted".
|
2019-06-15 22:57:17 +03:00
|
|
|
|
2020-09-15 17:12:58 +03:00
|
|
|
Relevant resources are:
|
2018-11-28 00:29:49 +03:00
|
|
|
|
2020-05-26 19:05:43 +03:00
|
|
|
- [Maestral API docs](https://maestral.readthedocs.io)
|
|
|
|
- [Dropbox API docs](https://www.dropbox.com/developers/documentation/http/documentation)
|
|
|
|
- [Dropbox Python SDK docs](https://dropbox-sdk-python.readthedocs.io/en/latest/)
|
2018-11-28 00:23:00 +03:00
|
|
|
|
2020-11-19 22:27:29 +03:00
|
|
|
[CONTRIBUTING.md](CONTRIBUTING.md) contains detailed information on the expected code
|
|
|
|
style and test format.
|
|
|
|
|
2021-10-03 01:50:13 +03:00
|
|
|
If you are using the macOS app bundle, please consider sponsoring the project with £1 per
|
2020-10-25 15:28:06 +03:00
|
|
|
month to offset the cost of an Apple Developer account to sign and notarize the bundle.
|
2020-06-16 15:51:46 +03:00
|
|
|
|
2020-10-06 15:00:34 +03:00
|
|
|
## System requirements
|
2019-07-09 19:19:49 +03:00
|
|
|
|
2023-03-13 23:21:48 +03:00
|
|
|
- macOS 10.15 Catalina or higher or Linux
|
2022-06-06 22:49:16 +03:00
|
|
|
- Python 3.7 or higher
|
2020-10-06 15:00:34 +03:00
|
|
|
- For the system tray icon on Linux:
|
2019-08-14 21:43:25 +03:00
|
|
|
- [gnome-shell-extension-appindicator](https://github.com/ubuntu/gnome-shell-extension-appindicator)
|
|
|
|
on Gnome 3.26 and higher
|