Mettez un manchot dans votre PC
Dernière modification 25 décembre 2022
- 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.
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.
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 là) ;
- 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.
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.
Accessoirement sur Android, on trouvera également un utilitaire de synchronisation des contacts et de l'agenda basé sur le protocole WebDAV.
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.
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.
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.
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 ("").
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
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)
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 ("").
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
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)
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.
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.
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
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é.
Pour vérifier alors que les deux répertoires sont identiques, on tapera
rclone check répertoire-source google-drive:répertoire-destination
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
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
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 ] |