Clone Files to Cloud Storage: Difference between revisions
From WickyWiki
mNo edit summary |
mNo edit summary |
||
| Line 20: | Line 20: | ||
= Configure = | = Configure = | ||
== | == Google Drive Client Access == | ||
Configure the account : | |||
* Go to the Developer Console: https://console.developers.google.com/apis/dashboard | |||
* Login if needed, makes sure you have the corrrect account | |||
* Create a project and select it | |||
* Select "ENABLE APIS AND SERVICES" and enable the "Google Drive API" | |||
== | === Configure rclone === | ||
This will | Note: | ||
* This will partly be repeated after the access token has expired. | |||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
rclone config | rclone config | ||
n | n # New remote | ||
name> | name> gdrive1 # Any short name | ||
Storage> drive | Storage Type> drive # Google Drive | ||
client_id> | client_id> | ||
client_secret> | client_secret> | ||
scope> | scope> drive # Full access all files, excluding Application Data Folder | ||
root_folder_id> | root_folder_id> | ||
service_account_file> | |||
Auto config> y | Auto config> y #your browser will open, login with your gmail account and allow access | ||
Team drives> n | Team drives> n | ||
is this OK?> y | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Sync from local to Google Drive, name 'gdrive1', folder 'rclone': | |||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
rclone sync -v ~/test4.txt " | rclone sync -v ~/test4.txt "gdrive1:/rclone/" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Synx from Google Drive to local: | |||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
rclone sync -v " | rclone sync -v "gdrive1:/rclone/test4.txt" ~/rclone/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Google Drive Service Account == | == Google Drive Service Account == | ||
* | Note: | ||
* The service account and the main account do not share access to Google Drive files. | |||
* You can not use the Webinterface to access the service account Google Drive files. However, a service account is still the preferred method if you want to machine-to-machine interaction. | |||
* To be able to use 'drive-impersonate' you need a "G Suite domain", for this you will need to use a domain that you 'own'. There are various ways to prove you 'own' a domain. | |||
Create a service account : | |||
* Go to the Developer Console: https://console.developers.google.com/apis/dashboard | |||
* Login if needed, makes sure you have the corrrect account | |||
* Create a project and select it | |||
* Select "ENABLE APIS AND SERVICES" and enable the "Google Drive API" | |||
* Use the " Create Credentials" button to create a "Service account key". Pick a "Service account name". "Role" can be empty. | |||
* Select "Key type JSON" and save the file for use with rclone config | |||
=== Configure rclone === | |||
<syntaxhighlight lang=bash> | |||
rclone config | |||
n # New remote | |||
name> gdrive # Any short name | |||
Storage Type> drive # Google Drive | |||
client_id> | |||
client_secret> | |||
scope> drive # Full access all files, excluding Application Data Folder | |||
root_folder_id> | |||
service_account_file> /home/pi/Scripts/rclone-4682b69ab73b.json | |||
Edit advanced config?> n | |||
Configure this as a team drive?> n | |||
is this OK?> y | |||
</syntaxhighlight> | |||
List contents: | |||
<syntaxhighlight lang=bash> | |||
rclone lsf -v "gdrive:" | |||
</syntaxhighlight> | |||
Sync: | |||
<syntaxhighlight lang=bash> | |||
rclone sync -v /home/pi/Documents "gdrive:/rclone/" | |||
</syntaxhighlight> | |||
rclone | List of rclone commands: | ||
* https://rclone.org/commands/ | |||
== | == Encryption == | ||
* https://rclone.org/crypt/ | * https://rclone.org/crypt/ | ||
Define an encrypted target, the configured remote | Define an encrypted target, in this axample the configured remote gdrive1 is used as storage. | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
rclone config | rclone config | ||
e/n/d/r/c/s/q> n | e/n/d/r/c/s/q> n | ||
name> | name> gdrive2 | ||
Storage> crypt | Storage> crypt | ||
remote> | remote> gdrive:/rclone2 | ||
filename_encryption> 2 | filename_encryption> 2 | ||
directory_name_encryption> 1 | directory_name_encryption> 1 | ||
| Line 99: | Line 126: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Sync from local to Google Drive, name 'gdrive2': | |||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
rclone sync -v | rclone sync -v /home/pi/Documents "gdrive2:/" | ||
</syntaxhighlight> | |||
List contents (encrypted): | |||
<syntaxhighlight lang=bash> | |||
rclone lsf -v "gdrive:/rclone2" | |||
</syntaxhighlight> | |||
List contents (decrypted): | |||
<syntaxhighlight lang=bash> | |||
rclone lsf -v "gdrive2:" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 20:08, 19 September 2018
Links
- http://wiki.linuxquestions.org/wiki/Rsync_with_Google_Drive
- https://rclone.org/drive/
- https://developers.google.com/identity/protocols/OAuth2ServiceAccount
Install
wget https://rclone.org/install.sh chmod +x install.sh sudo ./install.sh
Configure
Google Drive Client Access
Configure the account :
- Go to the Developer Console: https://console.developers.google.com/apis/dashboard
- Login if needed, makes sure you have the corrrect account
- Create a project and select it
- Select "ENABLE APIS AND SERVICES" and enable the "Google Drive API"
Configure rclone
Note:
- This will partly be repeated after the access token has expired.
rclone config n # New remote name> gdrive1 # Any short name Storage Type> drive # Google Drive client_id> client_secret> scope> drive # Full access all files, excluding Application Data Folder root_folder_id> service_account_file> Auto config> y #your browser will open, login with your gmail account and allow access Team drives> n is this OK?> y
Sync from local to Google Drive, name 'gdrive1', folder 'rclone':
rclone sync -v ~/test4.txt "gdrive1:/rclone/"
Synx from Google Drive to local:
rclone sync -v "gdrive1:/rclone/test4.txt" ~/rclone/
Google Drive Service Account
Note:
- The service account and the main account do not share access to Google Drive files.
- You can not use the Webinterface to access the service account Google Drive files. However, a service account is still the preferred method if you want to machine-to-machine interaction.
- To be able to use 'drive-impersonate' you need a "G Suite domain", for this you will need to use a domain that you 'own'. There are various ways to prove you 'own' a domain.
Create a service account :
- Go to the Developer Console: https://console.developers.google.com/apis/dashboard
- Login if needed, makes sure you have the corrrect account
- Create a project and select it
- Select "ENABLE APIS AND SERVICES" and enable the "Google Drive API"
- Use the " Create Credentials" button to create a "Service account key". Pick a "Service account name". "Role" can be empty.
- Select "Key type JSON" and save the file for use with rclone config
Configure rclone
rclone config n # New remote name> gdrive # Any short name Storage Type> drive # Google Drive client_id> client_secret> scope> drive # Full access all files, excluding Application Data Folder root_folder_id> service_account_file> /home/pi/Scripts/rclone-4682b69ab73b.json Edit advanced config?> n Configure this as a team drive?> n is this OK?> y
List contents:
rclone lsf -v "gdrive:"
Sync:
rclone sync -v /home/pi/Documents "gdrive:/rclone/"
List of rclone commands:
Encryption
Define an encrypted target, in this axample the configured remote gdrive1 is used as storage.
rclone config e/n/d/r/c/s/q> n name> gdrive2 Storage> crypt remote> gdrive:/rclone2 filename_encryption> 2 directory_name_encryption> 1 type password y/g/n> y seed y/g/n> n advanced config y/n> n
Sync from local to Google Drive, name 'gdrive2':
rclone sync -v /home/pi/Documents "gdrive2:/"
List contents (encrypted):
rclone lsf -v "gdrive:/rclone2"
List contents (decrypted):
rclone lsf -v "gdrive2:"