FUNIX

Mettez un manchot dans votre PC


Encourager FUNIX

La consultation du site est totalement libre et gratuite, sans publicités. Les dons sont néanmoins appréciés pour payer l'hébergement et encourager son auteur


Sauvegarde
Présentation   |   Recherche de solutions de stockage cloud | La solution kDrive d'Infomaniak | Sauvegarder en chiffrant les données sur Google Drive avec rclone ( Présentation , Préparation du compte Google Drive, Installation et configuration de rclone , Configurer l'envoi et le stockage de données chiffrées , Utilisation )]

Dernière modification 25 décembre 2022

La sauvegarde dans les nuages

Réseau et système

Présentation

Cette page complète la page sur la sauvegarde basée sur les outils borg, btrfs et unison, et présente :

- une solution de sauvegarde et de partage des données base sur un cloud payant kdrive d'infomaniak avec un dispositif de synchronisation automatique et des sauvegardes manuelles. Cette sauvegarde à distance vient compléter le dispositif local et permet de le rendre encore plus robuste à un sinistre qui détruirait à la fois le serveur et les sauvegardes locales.

- une pure solution de sauvegarde en supplément avec des données stockées chiffrées en utilisant rclone et Google Drive. Ce dernier offre une solution gratuite jusqu'à 15Go, ce qui est généralement largement suffisant pour stocker des données sensibles (hors fichiers multimédia). Si on peut s'inquiéter de la protection des données et de l'utilisation que Google peut en faire, le problème ne se pose pas car elles sont envoyées chiffrées et stockées en l'état sur le drive. C'est donc bien de la pure sauvegarde plutôt que du partage de données.

A noter que ce ne sera possible de faire de la sauvegarde chiffrée avec rclone avec infomaniak qu'après souscription à l'offre supplémentaire Swiss Backup.


Recherche de solutions de stockage cloud

Les critères de recherche d'une solution de stockage sur cloud peuvent varier, pour ce qui me concerne ce sont les suivants :
- un accès pour plusieurs personnes, en l’occurrence le cercle familial restreint, en plus de la sauvegarde classique, cela permet de partager facilement des données sans le besoin de mettre en place une solution fastidieuse de VPN ;
- une capacité d'au moins 2To pour pouvoir stocker essentiellement des documents divers et des photos, pour ses besoins propres et celui du cercle ;
- un outil de synchronisation qui fonctionne sous Linux et un autre sous Android ;
- et certaines garanties de sécurité, de confidentialité et de non réutilisation de mes données.

Cette recherche s'ouvre également aux services payants, considérant que tout service mérite rémunération et que si c'est gratuit, c'est qu'il y a un loup quelque part, rien n'est gratuit dans ce bas monde et dans ce cas ce sont les données personnelles qui sont la source de financement.

Vous ne trouverez pas ici une longue liste de toutes les solutions qui peuvent exister, on trouve beaucoup de sites qui les comparent avec plus ou moins d'objectivité quand ce ne sont pas des publireportages à peine déguisés. Je citerai toutefois cette page du forum d'Ubuntu et la page Wikipedia, même si elles ne sont pas complètement à jour.

Pour faire très bref dans cette phase de recherche et au risque que ce journal passe également pour un publireportage mon choix s'est porté sur kdrive de la société suisse Infomaniak.

[Retour haut de la page]

La solution kdrive d'Infomaniak

Voici une brève description de l'offre kdrive :
- il existe bien un client Linux et Android ;
- leur solution pour 3To pour 6 utilisateurs est une des moins chères du marché ;
- les données sont stockées sur trois différents serveurs et deux datacenters situés en Suisse gérés par une société indépendante non cotée en bourse, les outils utilisés sont basées sur des solutions libres (voir par ) ;
- la législation suisse en terme de protection de la vie privée est d'un bon niveau, la loi sur la protection des données (LPD) bientôt en vigueur améliore sensiblement la législation suisse actuelle en s'inspirant très largement du RGPD européen sans être toutefois aussi exigeant ;
- Infomaniak ne pratique pas l'analyse cloud pour extraire des informations commerciales exploitables et les revendre à des tiers.

Malheureusement les outils restic, duplicity, duplicati évoqués plus haut et rclone évoqué plus bas ne peuvent se synchroniser avec kdrive, c'est certainement un gros bémol de cette solution. Mais ce qui m'a séduit avant tout c'est le partage des données et la synchronisation automatique (Linux+Android).

Dans la pratique, l'essentiel de l'administration se fait à partir d'un navigateur et ceci quel que soit l'OS. C'est à partir du navigateur qu'on créera l'arborescence des fichiers partagés ou non, les fichiers partagés se retrouveront dans le répertoire Common documents, c'est également à partir du navigateur qu'on importera les fichiers.

Ensuite on récupérera l'exécutable Linux au format appimage pour lancer les synchronisations automatiques et qui fonctionne sur n'importe distribution récente, dont ma Mageia 8. Avec cet exécutable on désignera les répertoires à synchroniser, côté local et côté cloud, on pourra le lancer en tâche de fond pour œuvrer en silence. J'ai choisi de ne pas travailler directement sur les fichiers sur le cloud, la référence reste les fichiers locaux et le cloud la sauvegarde.

Titre de l'image

L'équivalent existe également sur Android, c'est un moyen pratique de synchroniser en background les fichiers multimédia qui se trouvent sur le téléphone et de faire le ménage régulièrement automatiquement.

Titre de l'image

Accessoirement sur Android, on trouvera également un utilitaire de synchronisation des contacts et de l'agenda basé sur le protocole WebDAV.

Titre de l'image

Côté sécurité, on trouvera également sous Android une application pour assurer une double authentification. Kdrive offre également tous un tas de service, il s'agit notamment d'outils de travail collaboratif et de transfert de (gros) fichiers.

[Retour haut de la page]

Sauvegarder en chiffrant dans le cloud Google Drive avec rclone

Présentation

rclone offre une solution qui est à peu près similaire avec kdrive, elle permet de synchroniser en ligne de commande un dossier local avec son pendant côté cloud et peut très bien être intégré à un script bash avec fonctionnement automatisé via cron. L'avantage de rclone est qu'il permet de chiffrer les données, ce que ne permet pas kdrive à ce stade. Par ailleurs rclone se synchronise avec un certain nombre de cloud, dans cette page est présentée la synchronisation avec Google Drive.

Préparation du compte Google Drive

Je pars sur l'hypothèse que vous avez un compte Google et Google Drive. Une préparation est nécessaire sur ce dernier pour donner l'accès à rclone. Il faudra accéder à la console Google Cloud Plateform. On va créer un nouveau projet que j'ai appelé rclone et j'ai laissé le numéro que Google a mis

Maintenant il faut bien vérifier que notre projet est bien sélectionné et s'affiche en haut de la fenêtre, on active maintenant l'API Google Drive en cliquant sur + ACTIVER LES APIS et SERVICES et je choisis l'icône Google Drive. On clique sur Activer,  sur la fenête ci-dessous voilà ce que ça donne une fois que c'est activé

Maintenant dans le menu à gauche, on clique sur Ecran de consentement OAuth, pour le type d'utilisateur vous avez le choix entre Interne et Externe, pour Interne qui dispense d'une validation de l'application, il faut avoir un compte google workspace, ça commence à faire beaucoup, j'ai donc choisi Externe. J'ai rempli ensuite à minima dans l'écran 1 Ecran de consentement OAuth, j'ai mis le nom de l'application rclone, mon email et l'email du développeur.

Dans l'écran 2 Niveau d'accès, j'ai rien touché. Au niveau de 3 Utilisateurs tests, je me suis rajouté, on revient ensuite au tableau de bord.

Toujours dans le menu à gauche, on clique sur Identifiants et + CREER DES IDENTIFIANTS, puis ID client OAuth, type d'application j'ai mis Application de bureau et je l'ai nommé également rclone


On clique sur CREER et une fenêtre vous donne  vos ID client et le mode de passe qui sera utile plus tard pour parfaire la connexion avec rclone


On  clique sur OK pour fermer la fenêtre et au niveau du tableau de bord on sélectionne l'API Google Drive, on retrouve notre client OAuth.

[Retour haut de la page]

Installation et configuration de rclone

Le site officiel est https://rclone.org/ vous pouvez installe le package de votre distribution ou récupérer la dernière version par ici  https://github.com/rclone/rclone/releases/tag/v1.57.0

tar xvfz rclone-1.57.0.tar.gz


cela donne le répertoire rclone-1.57.0 dans lequel on tapera (après avoir installé préalablement le package golang)

go build

puis en tant que root

cp rclone /usr/local/bin

On le configurera maintenant en tapant

rclone config

cela donne quelque chose comme cela

2021/11/20 18:06:01 NOTICE: Config file "/home/olivier/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one

n) New remote
s) Set configuration password
q) Quit config

on tapera n pour créer le nouvel espace à distance

n/s/q> n

j'ai mis comme nom google-drive

name> google-drive
Option Storage.
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ "fichier"
 2 / Alias for an existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Better checksums for other remotes
   \ "hasher"
 7 / Box
   \ "box"
 8 / Cache a remote
   \ "cache"
 9 / Citrix Sharefile
   \ "sharefile"
10 / Compress a remote
   \ "compress"
11 / Dropbox
   \ "dropbox"
12 / Encrypt/Decrypt a remote
   \ "crypt"
13 / Enterprise File Fabric
   \ "filefabric"
14 / FTP Connection
   \ "ftp"
15 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
16 / Google Drive
   \ "drive"
17 / Google Photos
   \ "google photos"
18 / Hadoop distributed file system
   \ "hdfs"
19 / Hubic
   \ "hubic"
20 / In memory object storage system.
   \ "memory"
21 / Jottacloud
   \ "jottacloud"
22 / Koofr
   \ "koofr"
23 / Local Disk
   \ "local"
24 / Mail.ru Cloud
   \ "mailru"
25 / Mega
   \ "mega"
26 / Microsoft Azure Blob Storage
   \ "azureblob"
27 / Microsoft OneDrive
   \ "onedrive"
28 / OpenDrive
   \ "opendrive"
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
30 / Pcloud
   \ "pcloud"
31 / Put.io
   \ "putio"
32 / QingCloud Object Storage
   \ "qingstor"
33 / SSH/SFTP Connection
   \ "sftp"
34 / Sia Decentralized Cloud
   \ "sia"
35 / Sugarsync
   \ "sugarsync"
36 / Tardigrade Decentralized Cloud Storage
   \ "tardigrade"
37 / Transparently chunk/split large files
   \ "chunker"
38 / Union merges the contents of several upstream fs
   \ "union"
39 / Uptobox
   \ "uptobox"
40 / Webdav
   \ "webdav"
41 / Yandex Disk
   \ "yandex"
42 / Zoho
   \ "zoho"
43 / http Connection
   \ "http"
44 / premiumize.me
   \ "premiumizeme"
45 / seafile
   \ "seafile"

A ce stade je choisis Google Drive qui correspond au numéro 16

Storage> 16
Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default ("").

[Retour haut de la page]

on saisira le client_id fourni par Google Drive

client_id> un-numéro-de-clientid.apps.googleusercontent.com
Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a string value. Press Enter for the default ("").

on saisit ici le client_secret fourni par Google Drive

client_secret> un-mot-de-passe-a-rallonge
Option scope.
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value.
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"

je choisis full access

scope> 1
Option root_folder_id.
ID of the root folder.
Leave blank normally.
Fill in to access "Computers" folders (see docs), or for rclone to use
a non root folder as its starting point.
Enter a string value. Press Enter for the default ("").

je laisse vide

root_folder_id>
Option service_account_file.
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a string value. Press Enter for the default ("").

je laisse vide

service_account_file>
Edit advanced config?
y) Yes
n) No (default)

je choisis de ne pas aller voir les paramètres avancés

y/n> n
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

et là je choisis auto config

y) Yes (default)
n) No
y/n> y
2021/11/20 19:26:56 NOTICE: Make sure your Redirect URL is set to "urn:ietf:wg:oauth:2.0:oob" in your custom config.
2021/11/20 19:26:56 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=VqC4HS6IDo-WLqR-CvjCOw
2021/11/20 19:26:56 NOTICE: Log in and authorize rclone for access
2021/11/20 19:26:56 NOTICE: Waiting for code...

A ce moment là le navigateur se lance et on devrait avoir cet écran

Quand on choisit son compte Google, voilà ce qui vient ensuite comme fenêtre


[Retour haut de la page]

on passe outre l'avertissement et clique sur Continuer et voici la nouvelle fenêtre

On choisit évidemment Continuer et c'est terminé de ce côté

On revient au terminal et on voit s'afficher

2021/11/20 19:27:15 NOTICE: Got code
Configure this as a Shared Drive (Team Drive)?

y) Yes
n) No (default)

C'est de la sauvegarde personnelle, je choisis de ne pas créer d'espace partagé

y/n> n
--------------------
[google-drive]
type = drive
client_id = le-clientid.apps.googleusercontent.com
client_secret = un-mot-de-passe-a-rallonge
scope = drive
root_folder_id = Sauvegarde
token = {"access_token":"un-token-avec-des-caractères-alphanumériques","token_type":"Bearer","refresh_token":"1//
encore-plein-caractères-alphanumériques","expiry":"2021-11-20T20:33:21.300023553+01:00"}
team_drive =
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote

on clique sur y pour terminer la configuration

y/e/d> y
Current remotes:

Name                 Type
====                 ====
google-drive         drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config

on peut quitter

e/n/d/r/c/s/q> q

si au fil du temps de l'utilisation de rclone vous obtenez l'erreur suivante

2021/11/28 07:29:09 Failed to create file system for "google-secret:Sauvegarde": failed to make remote "google-drive:/secret" to wrap: couldn't find root directory ID: Get "https://www.googleapis.com/drive/v3/files/root?alt=json&fields=id&prettyPrint=false&supportsAllDrives=true": couldn't fetch token - maybe it has expired? - refresh with "rclone config reconnect google-drive:": oauth2: cannot fetch token: 400 Bad Request
Response: {
  "error": "invalid_grant",
  "error_description": "Token has been expired or revoked."
}

le jeton (token) est périssable et doit être renouvelé régulièrement, ce qui est un peu gênant quand vous intégrez rclone dans un script. Pour le renouveler, il faudra taper la commande suivante

rclone config reconnect google-drive:

voilà la résultat

Already have a token - refresh?
y) Yes (default)
n) No
y/n> y
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n> y
2021/11/28 07:42:13 NOTICE: Make sure your Redirect URL is set to "urn:ietf:wg:oauth:2.0:oob" in your custom config.
2021/11/28 07:42:13 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=eohEThkXmlb5t4W_1jhtdg
2021/11/28 07:42:13 NOTICE: Log in and authorize rclone for access
2021/11/28 07:42:13 NOTICE: Waiting for code...

on est renvoyé ensuite vers le navigateur pour s'authentifier

2021/11/28 07:42:31 NOTICE: Got code
Configure this as a Shared Drive (Team Drive)?

y) Yes
n) No (default)
y/n> n

Sous Google Cloud Platform, si votre application rclone est en mode test, il faudra renouveler le token toutes les semaines, pour que que ça soit plus long, il faudra basculer en mode production (ci-dessous)


Dans ce cas à l'affichage de la fenêtre de consentement sur le navigateur vous êtes susceptibles d'avoir un warning pour vous connecter car votre application n'a pas été validée.

[Retour haut de la page]

Configurer l'envoi et le stockage des données chiffrées

A ce stade on peut déjà visualiser ce qu'il y a à la racine de l'espace Google Drive en tapant

rclone lsd google-drive:

et en envoyant des fichiers ou répertoires dans un répertoire test du drive

rclone copy -v --progress nom-fichier google-drive:test

La commande ci-dessous permet de liste le contenu du répertoire test

rclone lsf google-drive:test

on retrouve le fichier qu'on vient d'envoyer nom-fichier et qu'on peut tout à fait visualiser sur Google Drive.

mais ce qui nous intéresse est l'envoi et le stockage des données chiffrées. On relance la configuration en tapant

rclone config

voilà le résultat

Current remotes:

Name                 Type
====                 ====
google-drive         drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config

on retrouve google-drive précédemment créé et on crée un nouvel espace en tapant n

e/n/d/r/c/s/q> n

je l'appelle google-secret

name> google-secret
Option Storage.
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ "fichier"
 2 / Alias for an existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Better checksums for other remotes
   \ "hasher"
 7 / Box
   \ "box"
 8 / Cache a remote
   \ "cache"
 9 / Citrix Sharefile
   \ "sharefile"
10 / Compress a remote
   \ "compress"
11 / Dropbox
   \ "dropbox"
12 / Encrypt/Decrypt a remote
   \ "crypt"
13 / Enterprise File Fabric
   \ "filefabric"
14 / FTP Connection
   \ "ftp"
15 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
16 / Google Drive
   \ "drive"
17 / Google Photos
   \ "google photos"
18 / Hadoop distributed file system
   \ "hdfs"
19 / Hubic
   \ "hubic"
20 / In memory object storage system.
   \ "memory"
21 / Jottacloud
   \ "jottacloud"
22 / Koofr
   \ "koofr"
23 / Local Disk
   \ "local"
24 / Mail.ru Cloud
   \ "mailru"
25 / Mega
   \ "mega"
26 / Microsoft Azure Blob Storage
   \ "azureblob"
27 / Microsoft OneDrive
   \ "onedrive"
28 / OpenDrive
   \ "opendrive"
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
30 / Pcloud
   \ "pcloud"
31 / Put.io
   \ "putio"
32 / QingCloud Object Storage
   \ "qingstor"
33 / SSH/SFTP Connection
   \ "sftp"
34 / Sia Decentralized Cloud
   \ "sia"
35 / Sugarsync
   \ "sugarsync"
36 / Tardigrade Decentralized Cloud Storage
   \ "tardigrade"
37 / Transparently chunk/split large files
   \ "chunker"
38 / Union merges the contents of several upstream fs
   \ "union"
39 / Uptobox
   \ "uptobox"
40 / Webdav
   \ "webdav"
41 / Yandex Disk
   \ "yandex"
42 / Zoho
   \ "zoho"
43 / http Connection
   \ "http"
44 / premiumize.me
   \ "premiumizeme"
45 / seafile
   \ "seafile"

Cette fois-ci je choisis un drive chiffré avec 12

Storage> 12
Option remote.
Remote to encrypt/decrypt.
Normally should contain a ':' and a path, e.g. "myremote:path/to/dir",
"myremote:bucket" or maybe "myremote:" (not recommended).
Enter a string value. Press Enter for the default ("").

[Retour haut de la page]

j'indique ici le nom du drive Google Drive précédemment créé et le répertoire où sera stocké les fichiers chiffrés

remote> google-drive:/secret
Option filename_encryption.
How to encrypt the filenames.
Enter a string value. Press Enter for the default ("standard").
Choose a number from below, or type in your own value.
   / Encrypt the filenames.
 1 | See the docs for the details.
   \ "standard"
 2 / Very simple filename obfuscation.
   \ "obfuscate"
   / Don't encrypt the file names.
 3 | Adds a ".bin" extension only.
   \ "off"

je choisis de chiffrer les fichiers

filename_encryption> 1
Option directory_name_encryption.
Option to either encrypt directory names or leave them intact.
NB If filename_encryption is "off" then this option will do nothing.
Enter a boolean value (true or false). Press Enter for the default ("true").
Choose a number from below, or type in your own value.
 1 / Encrypt directory names.
   \ "true"
 2 / Don't encrypt directory names, leave them intact.
   \ "false"

En revanche je choisis de laisser en clair le nom des répertoires

directory_name_encryption> 2
Option password.
Password or pass phrase for encryption.
Choose an alternative below.
y) Yes type in my own password
g) Generate random password

je choisis de mettre mon propre mot de passe (à conserver préciseusement avec une solution type KeePassXC)

y/g> y
Enter the password:
password:
Confirm the password:
password:
Option password2.
Password or pass phrase for salt.
Optional but recommended.
Should be different to the previous password.
Choose an alternative below. Press Enter for the default (n).
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank (default)

je choisis de ne pas mettre de deuxième mot de passe

y/g/n>
Edit advanced config?
y) Yes
n) No (default)
y/n> n
--------------------
[google-secret]
type = crypt
remote = google-drive:/secret
directory_name_encryption = false
password = *** ENCRYPTED ***
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

et voilà c'est terminé on voit le drive Google Drive en clair et le drive chiffré

Current remotes:

Name                 Type
====                 ====
google-drive         drive
google-secret        crypt

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

Maintenant quand j'édite le fichier ~/.config/rclone/rclone.conf

[google-drive]
type = drive
client_id = numéro-clientid.apps.googleusercontent.com
client_secret = mot-de-passe-à rallonge
scope = drive
root_folder_id =
token = {"access_token":"pleins-de-caractères-alphanumériques","token_type":"Bearer","refresh_token":"pleins-de-caractères-alphanumériques","expiry":"2021-11-20T20:33:21.300023553+01:00"}
team_drive =

[google-secret]
type = crypt
remote = google-drive:/secret
directory_name_encryption = false
password = un-mot-de-passe

Utilisation

Présentation

rclone se lance avec une option principale et des sous options (appelées flags), pour les options on trouve (liste non exhaustive)
  • copy pour copier des répertoires
  • sync pour synchroniser deux répertoires
  • ls pour lister le contenu d'un répertoire
  • check pour vérifier que deux répertoires sont identiques

et pour les sous options pour les options de transfert (copy et sync) qui ont essentiellement des considérations de performance, on peut trouver (liste non exhaustive également)

  • --progress (pour avoir l'état d'avancement de la commande)
  • --verbose donne des informations sur chaque fichier transféré
  • --transfers 4 (le nombre de fichier à traiter en parallèle, par défaut 4)
  • --checkers 8 (le nombre de process de vérification à lancer pour vérifier les transferts, par défaut 8)
  • --contimeout 1m (le délai d'attente de la connexion, par défaut 1 minute)
  • --retries 3 (le nombre d'essais avant échec, par défaut 3)
  • --update vérifie que le fichier sur le cloud n'est pas plus récent, dans ce cas il n'est pas écrasé par le fichier moins récent du répertoire source
  • --timeout 5m si un transfert a commencé mais est inactif pendant ce temps, il est considéré comme interrompu et déconnecté, par défaut 5m
  • La liste complète peut se trouver ici. Il existe également un certain nombre de filtres que je ne détaillerai pas ici tellement il y en a qui sont décrits sur cette page qui permettent de dé/sélectionner certains fichiers suivant leur nom, leur taille ou leur âge.

    Copie

    Maintenant pour copier des données chiffrées sur le drive, il suffira de taper

    rclone copy Assurance google-secret:/Assurance

    C'est à dire du répertoire source Assurance vers le répertoire destinataire google-secret:/Assurance. Les fichiers chiffrés avec leur nom chiffré se retrouveront donc dans le répertoire secret/Assurance

    La restauration avec déchiffrement des données se fait ainsi

    rclone copy --progress google-secret:/Assurance ~/restauration

    On inverse tout simplement le répertoire source et celui de destination.

    Lister une arborescence

    Pour faire suite au répertoire précédent, pour lister le contenu du répertoire distant on tapera

    rclone  ls google-drive:secret/Assurance

    je verrai bien mes fichiers avec leur nom chiffré

       10755 tk027u5lifj4njm1aeenhgs0pj7iv5n9aap1fangpdrsaevagdssqegcr1cpo9v0nuao4cli4opj4
       978668 2bov2ml822nn5o05vo3v9h4tv8f80484807e9leel5u5kgcdk98g
         1281 lhm2fpk2b5j3hn7jodptealt2c
      1744221 gmf/f306dm735rmlv6mijhoeet2vn0
       341061gmf/e1b6vekao1dvk5edkku932g4635b17tpreqp57k9s4dufuvkm8drqp48nr3a73m0d1c5ujtkohmnqj16dfp889u2i2tralp9dpa8vg8

    en revanche en tapant la commande ci-dessous, je verrai le nom des fichiers en clair

    rclone ls google-secret:/Assurance

    à noter que rclone lsl vous donnera davantage d'information dont la date de la copie

    [Retour haut de la page]

    Synchroniser des répertoires

    Pour synchroniser deux répertoires on utilisera la syntaxe suivante

    rclone sync répertoire-source google-drive:répertoire-destination

    c'est le répertoire source qui est le répertoire de référence, il est conseillé de ne pas faire évoluer le répertoire destination en parallèle pour éviter les conflits. Il est utile de le lancer avec l'option -i (mode interactif) pour s'assurer de son fonctionnement et éviter une copie/suppression malheureuse.

    Il existe également l'option –-dry-run pour faire une synchronisation à blanc pour voir ce qui sera copié et ce qui sera supprimé.

    Vérifier que deux répertoires sont identiques

    Pour vérifier alors que les deux répertoires sont identiques, on tapera

    rclone check répertoire-source google-drive:répertoire-destination


    Monter un répertoire drive

    Quelques autres commandes en vrac, vous pouvez monter localement votre drive dans un répertoire local en tapant (ici ça va monter le répertoire test du drive dans un répertoire local gdrive se trouvant dans la homedirectory)

    rclone mount google-drive:test ~/gdrive/

    le drive se trouve monté et peut être utilisé comme n'importe quel espace local pour déplacer, supprimer ou copier des fichiers

    on pourra également monter le drive chiffré et les fichiers seront vus localement en clair.

    il suffira de taper CTRL+C pour interrompre le montage

    Vous pouvez également au partage à l'adresse https://drive.google.com/drive/my-drive

    rclone intégré dans un script bash

    Maintenant libre à vous d'intégrer la commande dans un script bash qui pourra se lancer avec cron. Voici deux exemples

    Un simple script pour effectuer une copie

    #!/bin/bash

    LOG_FILE="/var/log/rclone.log"
    REP_FILTRE="/home/olivier/Documents/rep-filtre.txt"
    DESTINATION="google-secret:Sauvegarde"
    DESTINATION_ARCHIVE="google-secret:Sauvegarde-archive"

    /usr/local/bin/rclone -v --skip-links --update\
            copy / $DESTINATION\
        --filter-from $REP_FILTRE --log-file $LOG_FILE

    et la variante pour effectuer une synchronisation

    #!/bin/bash

    LOG_FILE="/home/olivier/tmp/sync-rclone.log"
    REP_FILTRE="/home/olivier/Documents/rep-filtre.txt"
    DESTINATION="google-secret:Sauvegarde"
    DESTINATION_ARCHIVE="google-secret:Sauvegarde-archive"
    ladate=`date +"%Y-%m-%d--%T"`
    SUFFIX_DATE=.$ladate

    /usr/local/bin/rclone -v --skip-links \
        --backup-dir $DESTINATION_ARCHIVE --suffix $SUFFIX_DATE\
            sync / $DESTINATION --filter-from $REP_FILTRE --log-file $LOG_FILE

    A noter que ce script va procéder à un archivage par date des anciennes versions dans un répertoire Sauvegarde-archive. Le fichier rep-filtre.txt pourra ressembler à ça

    #répertoires et fichiers à exclure
    - /mana/data/bureautique/documents/**
    - /mana/data/bureautique/Santé/Olivier/Accident\ Vélo/photos/**
    - /mana/data/bureautique/Doc-Funix/funix/old/**
    - /mana/data/bureautique/Doc-Funix/pdf/old/**
    - /mana/data/bureautique/Doc-Funix/pdf/ebook/**
    - /mana/data/bureautique/Généalogie/ancestris/siteweb/**
    - /mana/data/bureautique/rep-filtre.txt
    - /mana/data/bureautique/arborescence
    - /mana/data/bureautique/**/.directory

    #répertoires et fichiers à inclure
    + /mana/data/bureautique/Finance/**
    + /mana/data/bureautique/Assurance/**
    + /mana/data/bureautique/Santé/**
    + /mana/data/bureautique/Courrier/**
    + /mana/data/bureautique/Généalogie/**
    + /mana/data/bureautique/Maison/**
    + /mana/data/bureautique/Identité/**
    + /mana/data/bureautique/document\ Véronique/**
    + /mana/data/bureautique/Loisirs/**
    + /mana/data/bureautique/Voiture/**
    + /mana/data/bureautique/Doc-Funix/**

    #on exclut tout le reste
    - /**

    Attention l'ordre est important, on met les répertoires/fichiers à exclure en premier, ceux à inclure ensuite et on termine en excluant tout le reste, la lecture se fait du haut vers le bas, dès qu'une condition est réunie, il ne va pas plus loin. A noter que le ** inclut les fichiers et sous répertoires de manière récursive, ce qui n'est pas le cas du simple *.

    Ce fichier sera utilisé à la fois pour la copie ou la synchronisation. Pour rappel la syntaxe est décrite ici.

    Les fichiers seront sauvegardés sous Google Drive sous Sauvegarde/mana/data/bureautique en conservant leur chemin. Les archives seront sous /Sauvegarde-archive/mana/data/bureautique. avec le suffixe de date à la fin de chaque fichier sous ce format  .2021-12-04--07:55:25.

    Il est possible évidemment de procéder en relatif également, il faudra veiller dans ce cas à modifier le fichier des inclusions/exclusions et la variable source de l'option sync ou copy.

    Vous avez tout intérêt à lancer le script à blanc avec un --dry-run pour voir si ça correspond à ce que vous voulez.

    Pour qu'une synchronisation ait lieu maintenant tous les jours, en admettant que votre fichier s'appelle sync-rclone et se trouve sous /usr/local/bin pour qu'il soit lancé par root toutes les nuits à 4h du mat on tapera en tant que root

    crontab -u olivier -e

    on indique

    00 04 * * * /home/olivier/bin/sync-rclone

    et voilà le résultat final

    no crontab for olivier - using an empty one
    crontab: installing new crontab

    Ça donnera quelque chose comme cela en cas de synchronisation et d'archivage

    2021/12/04 16:35:09 INFO  : mana/data/bureautique/Finance/les comptes.ods: Moved (server-side) to: mana/data/bureautique/Finance/les comptes.ods.2021-12-04--16:34:59
    2021/12/04 16:35:35 INFO  : mana/data/bureautique/Finance/les comptes.ods: Copied (new)
    2021/12/04 16:35:35 INFO  :
    Transferred:           2.608 MiB / 2.608 MiB, 100%, 87.635 KiB/s, ETA 0s
    Checks:              1817 / 1817, 100%
    Renamed:                1
    Transferred:            1 / 1, 100%
    Elapsed time:        36.5s

    et dans le cas contraire

    2021/12/05 07:09:25 INFO  : There was nothing to transfer
    2021/12/05 07:09:25 INFO  :
    Transferred:                 0 B / 0 B, -, 0 B/s, ETA -
    Checks:              1816 / 1816, 100%
    Elapsed time:        19.5s

    Le problème est que Google Drive est dans sa version gratuite limitée à 15Go, il sera sans doute nécessaire de faire le ménage de temps à autre si vous ne souhaitez pas passer à la version payante.

    Pour supprimer par exemple tous les fichiers plus vieux de 90 jours dans le répertoire Sauvegarde-archive du drive on tapera

    rclone delete  google-secret:Sauvegarde-archive --min-age 90d -v

    ça va donner un résultat comme ceci

    2022/12/25 16:27:31 INFO  : ultra/data/homepage/www.funix.org/en/linux/cinelerra_fichiers/translate_n_data/frame_back.gif.2022-12-25--15:48:18: Deleted
    2022/12/25 16:27:31 INFO  : ultra/data/homepage/www.funix.org/en/linux/base-video_fichiers/translate_n_data/stock_frame_logo.gif.2022-12-25--15:48:18: Deleted
    2022/12/25 16:27:31 INFO  : ultra/data/homepage/www.funix.org/en/linux/base-video_fichiers/translate_n_data/frame_remove.gif.2022-12-25--15:48:18: Deleted
    2022/12/25 16:27:31 INFO  : ultra/data/homepage/www.funix.org/en/linux/base-video_fichiers/translate_n_data/frame_back.gif.2022-12-25--15:48:18: Deleted

    le paramètre min-age demande une durée qui prend la forme de d (pour jour/day), w (semaine/week), M (mois/month), y (année/year).

    Pour supprimer systématiquement les fichiers de plus d'un an à chaque sauvegarde, on pourra compléter le script ci-dessus en rajoutant

    /usr/local/bin/rclone delete $DESTINATION_ARCHIVE --min-age 12M -v --log-file $LOG_FILE


     
    [Retour page d'accueil FUNIX] [Retour haut de la page ]