Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ddragosd/python-rclone

Python module for rclone
https://github.com/ddragosd/python-rclone

Last synced: about 2 months ago
JSON representation

Python module for rclone

Awesome Lists containing this project

README

        

# python-rclone

[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0)
[![Build Status](https://travis-ci.org/ddragosd/python-rclone.svg?branch=master)](https://travis-ci.org/ddragosd/python-rclone)

A Python wrapper for [rclone](https://rclone.org/).

`rclone` must be already [installed](https://rclone.org/install/) and discoverable in `$PATH`.

## Status
Work in progress. Experimental.

## Usage

```python
import rclone

cfg = """[local]
type = local
nounc = true"""
result = rclone.with_config(cfg).listremotes()

print(result.get('out'))
# b'local:\n'
print(result.get('code'))
# 0
print(result.get('error'))
# b''
```

### Implemented commands:

* `copy` Copy files from source to dest, skipping already copied
* `sync` Make source and dest identical, modifying destination only.
* `listremotes` List all the remotes in the config file.
* `ls` List the objects in the path with size and path.
* `lsjson` List directories and objects in the path in JSON format.
* `delete` Remove the contents of path.

Even if not all `rclone` commands have been exposed, it's possible to invoke any command using `run_cmd` method directly, as shown in the example bellow:

```python
import rclone

cfg = """[local]
type = local
nounc = true"""
result = rclone.with_config(cfg).run_cmd(command="lsd", extra_args=["local:/tmp", "-v", "--dry-run"])
```

### Logging and Debugging

To see more info about which commands are executed, or what other messages they print, you can enable logging as the example bellow shows:

```python
import logging
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s %(name)s [%(levelname)s]: %(message)s")

import rclone

cfg = """[local]
type = local
nounc = true"""
result = rclone.with_config(cfg).listremotes()
```

## Developer guide

```bash
$ pip install -r requirements.txt
$ make test
```