cloudsync enables simple cloud file-level sync with a variety of cloud providers
Project description
cloudsync README
Python Cloud Synchronization Library
Installation
pip install cloudsync
# install provider support
pip install cloudsync-gdrive
Links
Command-line Example
cloudsync sync --help
cloudsync sync file:c:/users/me/documents gdrive:/mydocs
# on linux you can pass -D for 'daemon mode', which will detatch and run in the background
Example of a single cloud provider integration
import cloudsync
# Get a generic client_id and client_secret. Do not use this in production code.
# For more information on getting your own client_id and client_secret, see README_OAUTH.md
oauth_config = cloudsync.command.utils.generic_oauth_config('gdrive')
# get an instance of the gdrive provider class
provider = cloudsync.create_provider('gdrive', oauth_config=oauth_config)
# Start the oauth process to login in to the cloud provider
creds = provider.authenticate()
# Use the credentials to connect to the cloud provider
provider.connect(creds)
# Perform cloud operations
for entry in provider.listdir_path("/"):
print(entry.path)
Example of a syncronization between two cloud providers
import cloudsync
import tempfile
import time
# a little setup
local_root = tempfile.mkdtemp()
remote_root = "/cloudsync_test/" + time.strftime("%Y%m%d%H%M")
provider_name = 'gdrive'
print("syncronizing between %s locally and %s on %s" % (local_root, remote_root, provider_name))
# Get a generic client_id and client_secret. Do not use this in production code.
# For more information on getting your own client_id and client_secret, see README_OAUTH.md
cloud_oauth_config = cloudsync.command.utils.generic_oauth_config(provider_name)
# get instances of the local file provider and cloud provider from the provider factory
local = cloudsync.create_provider("filesystem")
remote = cloudsync.create_provider(provider_name, oauth_config=cloud_oauth_config)
# Authenticate with the remote provider using OAuth
creds = remote.authenticate()
# Connect with the credentials acquired by authenticating with the provider
local.namespace = local_root # filesystem provider wants to know the root namespace before connecting
local.connect(None)
remote.connect(creds)
# Create the folder on google drive to syncronize locally
print("Creating folder %s on %s" % (remote_root, provider_name))
remote.mkdirs(remote_root) # provider.mkdirs() will automatically create any necessary parent folders
# Specify which folders to syncronize
sync_roots = (local_root, remote_root)
# instantiate a new sync engine and start syncing
sync = cloudsync.CloudSync((local, remote), roots=sync_roots)
sync.start()
# should sync this file as soon as it's noticed by watchdog
local_hello_path = local.join(local_root, "hello.txt")
print("Creating local file %s" % local_hello_path)
with open(local_hello_path, "w") as f:
f.write("hello")
# note remote.join, NOT os.path.join... Gets the path separator correct
remote_hello_path = remote.join(remote_root, "hello.txt")
# wait for sync to upload the new file to the cloud
while not remote.exists_path(remote_hello_path):
time.sleep(1)
remote_hello_info = remote.info_path(remote_hello_path)
# rename in the cloud
local_goodbye_path = local.join(local_root, "goodbye.txt")
remote_goodbye_path = remote.join(remote_root, "goodbye.txt")
print("renaming %s to %s on %s" % (remote_hello_path, remote_goodbye_path, provider_name))
remote.rename(remote_hello_info.oid, remote_goodbye_path) # rename refers to the file to rename by oid
# wait for sync to cause the file to get renamed locally
while not local.exists_path(local_goodbye_path):
time.sleep(1)
print("synced")
sync.stop(forever=True)
local.disconnect()
remote.disconnect()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cloudsync-3.2.0.tar.gz
(259.6 kB
view details)
Built Distribution
cloudsync-3.2.0-py3-none-any.whl
(222.8 kB
view details)
File details
Details for the file cloudsync-3.2.0.tar.gz
.
File metadata
- Download URL: cloudsync-3.2.0.tar.gz
- Upload date:
- Size: 259.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.26.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b52ce340502de4caf5ffd9e3d7ea586e9d33dc567db8728a8be04d4f3f9a50e9 |
|
MD5 | 0812c88412b8b961c8da97c9b7e029fb |
|
BLAKE2b-256 | 7e8631b97e210d3db9fcf02fb7d067b6ef357b4aca01f3cd3eb1e2083c9316e6 |
File details
Details for the file cloudsync-3.2.0-py3-none-any.whl
.
File metadata
- Download URL: cloudsync-3.2.0-py3-none-any.whl
- Upload date:
- Size: 222.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.26.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8ab0d7432c6df07391d921a95e6c82b8786bbfdf64af550827ff5a5684e7994 |
|
MD5 | 91ab95a265a29f90b9dfede2e2d1670c |
|
BLAKE2b-256 | 823e213bdfe5e4dd1c94d21e2c791c56420f46da5ce8428fcbf8989784d424fb |