A simple python script for rclone. Use multiple Google Service Accounts and cycle through them.

Overview

About GSAclone

GSAclone is a simple python script for rclone, written with the purpose of using multiple Google service accounts on Google Drive and "randomize" them. Though they are not really randomized, at least they are cycled through, and you won't have to manually specify which service account you use on each command.

The other solution such as AutoRclone and gclone doesn't work on me, when I tried it a few months ago.
So I decided to write my own rclone script and voila, this is it. The script is far from perfect, but at least it gets the job done for my use case.

How to use (Windows only)

1). Setting up the environment:
Your service accounts should be first renamed into "service_account_X.json" where X is the number from 0 to (let's say) 100.

Here's how I set up mine:

rclone is in "D:/Utility/rclone"
Service accounts are stored in the same folder as rclone, inside the service_account folder: "D:/Utility/rclone/service_accounts"
Inside the folder, I have a hunder of service accounts named from "service_account_0.json" to "service_account_100.json"

To perform a sync from GDrive 1 to GDrive 2, I run: "python GSAclone -m sync -s GDrive_Shiro39: -d GDrive_Backup:

2). You must have python already installed on your system first.
As I'm using Windows and I wrote this script on Windows, the example usage below is for Windows.

Open the script in either CMD (Command Prompt) or Windows Terminal

python GSAclone.py -h

usage: GSAclone.py [-h] -m MODE -s SOURCE -d DESTINATION

rclone but with multiple Google Service Accounts.

optional arguments:
  -h, --help            show this help message and exit
  -m MODE, --mode MODE                        copy or sync
  -s SOURCE, --source SOURCE                  Example: --source remote_1:
  -d DESTINATION, --destination DESTINATION   Example: --destination remote_2:

To copy/sync GDrive 1 to GDrive 2:

python GSAclone.py --mode copy/sync --source remote_name_src: --destination remote_name_dest:

Configurations

Below are the configurations that you can modify to your needs.

var_loop = 3                              # Tells the script how many times it should be looping for.
var_sleep = 60                            # Tells the script how long it should delay the next routine.

rclone_path = "D:/path/to/rclone"        # Path to where you store rclone. You do NOT need to type in "/rclone.exe"!
rclone_sa_path = "default"                # Set this to "default" to use the same path as your rclone path, or set your own path.


rclone_dry_run = "disabled"               # Tells rclone to run in simulated mode (--dry-run). (Default is "disabled")
rclone_verbose = "disabled"               # Print useful information onto the console (or a log file). (Default is "disabled")
rclone_verbose_level = "default"          # Set the verbose level ("default" or "super"). (Default is "default")

rclone_log_path = "default"             # Set this to "default" to use the same path as your rclone path, or set your own path.
rclone_log_mode = "default"             # Set this to "default" or "json" if you want the log to be in json format.

rclone_log_level = "debug"              # Set the debugging level. (Default is "debug". This is NOT the default from rclone! but rather, from this script.)
                                        # Debugging levels:
                                        # DEBUG is equivalent to -vv. It outputs lots of debug info - useful for bug reports and really finding out what rclone is doing.
                                        # INFO is equivalent to -v. It outputs information about each transfer and prints stats once a minute by default.
                                        # NOTICE is the default log level if no logging flags are supplied. It outputs very little when things are working normally. It outputs warnings and significant events.
                                        # ERROR is equivalent to -q. It only outputs error messages.

rclone_logging = "disabled"               # Set to "enabled" if you wish rclone to output its logs into a file. (Default is "disabled")
                                          # If verbose is enabled, logging will be disabled. You cannot have verbose and logging at the same time.
                                          # Since this script is going to loop for a certain amount of time (based on "var_loop") you could end up with a huge log file size!

rclone_check_first = "enabled"            # Tells rclone to perform check first before transfer. (Default is "enabled")
rclone_fast_list = "enabled"              # Enable --fast-list, useful to reduce the API call but uses more memory. (Default is "enabled")
rclone_modtime = "update"               # Tells rclone to update the modified time of a file. (Set to "update" or "noupdate". Default is "update")

rclone_compare = "default"                # rclone compare mode:
                                          # default            : rclone will look at modification time and size.
                                          # checksum           : rclone will look at checksum and size.
                                          # only-mod-time      : rclone will look at checksum and modification time.
                                          # only-size          : rclone will look at file size only.
                                          # only-checksum      : rclone will look at checksum only.

If rclone_sa_path = "default" you have to store your service accounts inside a folder name "service_account" in your rclone folder.

You could modify the rclone_args = "", but for the sake of keeping the script from having any issue (that I may not be able to help you), I recommend you not to add more rclone flags. If you know exactly what you are doing and you know how to read the flow of the script, feel free to modify it, of course!

Disclaimer

This script is NOT flawless and in fact, far from perfect! The current biggest issue is that it cannot accept any input containing spaces.
For example: rclone_path = "path/to wherever/your/rclone/is" or "remote1:/hellow world/test"

As long as you are backing up from the root folder, it should work just fine.

License

This script is provided "AS IS" and is licensed under the MIT License.

Owner
Shiro39
Hello there! I'm not a programmer / coder, I'm just a hobbyist. Please refrain from asking me to do this or that, as chances are I may not be able to do it.
Shiro39
Built for streamlining development of Google Assistant Actions

Apprentice Apprentice is a framework built for developing Google Actions via Dialogflow and Google Cloud (serverless) Functions. Includes: plug-and-pl

Andrew Graham-Yooll 9 May 16, 2019
GTPS Status Bot

Python GTPS Status Bot (BETA) Python GTPS Status Bot Require Python How To Use Download This Source Extract The Zip File Install the requirements (Mod

Lamp 4 Oct 11, 2021
Simple script to ban bots at Twitch chats using a text file as a source.

AUTOBAN ๐Ÿ‡บ๐Ÿ‡ธ English version Simple script to ban bots at Twitch chats using a text file as a source. How to use Windows Go to releases for further in

And Paiva 5 Feb 06, 2022
One destination for all the developer's learning resources.

DevResources One destination for all the developer's learning resources. Find all of your learning resources under one roof and add your own. Live โœจ Y

Gaurav Sharma 33 Oct 21, 2022
An API wrapper around Discord API written in Python

Diskord This library is a maintained fork of now archived library, discord.py. A modern and easy to use API wrapper around Discord API written in Pyth

Diskord 36 Aug 22, 2022
A Telegram bot to send messages in Telegram groups or Channels using bots anonymously.

Group-chatting-bot A bot to send messeges to group using bot telegram bot โค๏ธ Support Made with Python3

Pyrogramers 16 Nov 06, 2022
Unit testing AWS interactions with pytest and moto. These examples demonstrate how to structure, setup, teardown, mock, and conduct unit testing. The source code is only intended to demonstrate unit testing.

Unit Testing Interactions with Amazon Web Services (AWS) Unit testing AWS interactions with pytest and moto. These examples demonstrate how to structu

AWS Samples 21 Nov 17, 2022
An advanced QR Code telegram bot with more features.

QR Code Bot A telegram qr code encode and decode bot Advanced Features 1. Database ( MongoDB ) Support 2. Broadcast Support 3. Status Command 4. Setti

Fayas Noushad 16 Nov 12, 2022
WhatSender is a python package that allows you to send Whatsapp messages at a given time.

WhatSender is a python package that allows you to send Whatsapp messages at a given time.

IdoBarel 0 Apr 21, 2022
This Telegram bot allows you to create direct links with pre-filled text to WhatsApp Chats

WhatsApp API Bot Telegram bot to create direct links with pre-filled text for WhatsApp Chats You can check our bot here. The bot is based on the API p

RobotTrick โ€ข ืจื•ื‘ื•ื˜ืจื™ืง 17 Aug 20, 2022
:electric_plug: Generating short urls with python has never been easier

pyshorteners A simple URL shortening API wrapper Python library. Installing pip install pyshorteners Documentation https://pyshorteners.readthedocs.i

Ellison 351 Jan 03, 2023
๐Ÿ’– Telegram - Telethon - UserBot ๐Ÿ’–

ใ€Žแญ™๊ช–แฅ…ฦบแบžรธโ€ ใ€ ๐Ÿ‡ฎ๐Ÿ‡ณ โšก แญ™๊ช–แฅ…ฦบBot Is One Of The Fastest & Smoothest Bot On Telegram Based on Telethon โšก Status Of Bot Telegram ๐Ÿช YouTube ๐Ÿ“บ Dั”ฯโ„“ฮฟฮณ ฯ„ฮฟ ะฝั”ัฮฟฮบฯ… D

Team WarZ 1 Mar 28, 2022
A WhatsApp Crashing Tool for Termux

CrashW A WhatsApp Crashing Tool For Termux Users Installing : apt update && apt upgrade -y pkg install python3 pkg install git git clone git://gith

Gokul Mahato 20 Dec 27, 2022
Easy to use Google Pub/Sub

Relรฉ makes integration with Google PubSub straightforward and easy. Motivation and Features The Publish-Subscribe pattern and specifically the Google

Mercadona 188 Jan 06, 2023
SQS + Lambda๋ฅผ ํ™œ์šฉํ•œ ๋ฌธ์ž ๋ฉ”์‹œ์ง€ ๋ฐ ์ด๋ฉ”์ผ, Voice call ํ˜ธ์ถœ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” serverless ํ…œํ”Œ๋ฆฟ

AWS SQS With Lambda notification ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ์œ„ํ•œ Poc TODO serverless๋ฅผ ํ†ตํ•ด sqs ๊ด€๋ จ ๋ฆฌ์†Œ์Šค(๋žŒ๋‹ค, sqs) ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ ๋ฐ ๋ฐฐํฌ poc์ฐจ์›์—์„œ ๊ฐ„๋‹จํ•œ rest api ํ˜ธ์ถœ์„ ํ†ตํ•œ sqs fifo ํ์— ๋ฉ”์‹œ์ง€

๊น€์„ธํ™˜ 4 Aug 08, 2021
A powerful discord bot for forming team.

Discord_SquadBot A powerful discord bot for forming team. Pre-requirement Python 3.7 and latest Discord.py module is required. Installation guideline

Jacky Yu 2 Jan 29, 2022
A delivery protection and notification system

DeliveryProtect This project builds a delivery protection and notification system, based on integration of Arduino Uno and Raspberry Pi 4. The codes a

2 Dec 13, 2021
A frame to create discord bots (for myself) that uses cogs, JSON, activities, and more.

dpy-frame A frame to create discord bots (for myself) that uses cogs, JSON, activities, and more. NOTE: Documentation is incomplete, so please wait un

Apple Discord 1 Nov 06, 2021
Python3 library that can retrieve Chrome-based browser's saved login info.

Passax EDUCATIONAL PURPOSES ONLY Python3 library that can retrieve Chrome-based browser's saved login info. Requirements secretstorage~=3.3.1 pywin32=

Auax 1 Jan 25, 2022