Comment gérer les fichiers sur le stockage en nuage avec Rclone sur Linux
Rclone est un programme de ligne de commande gratuit et open source pour gérer les fichiers sur des services de stockage en nuage comme Google Drive, Backblaze B2, Amazon S3 et bien d’autres. L’application est écrite dans le langage de programmation Go et son code source est hébergé sur GitHub. Dans ce tutoriel, nous apprenons comment installer Rclone sur les distributions Linux les plus utilisées et comment effectuer des opérations de base comme copier, synchroniser, déplacer et supprimer des données. Dans le processus, nous voyons également comment obtenir les identifiants de l’API Google Drive et comment configurer une télécommande Google Drive pour Rclone.
Dans ce tutoriel, vous apprendrez :
- Comment installer Rclone sur certaines des distributions Linux les plus utilisées
- Comment obtenir les identifiants de l’API Google Drive et configurer une télécommande Google Drive Rclone
- Comment utiliser Rclone pour gérer les données sur le stockage en nuage
Installation
Rclone est disponible dans les dépôts officiels de toutes les principales distributions Linux. Pour installer le programme sur Fedora, nous exécutons :
sudo dnf install rcloneLa même commande peut être utilisée pour installer Rclone sur RHEL, Rocky Linux et AlmaLinux, cependant, sur ces distributions, avant de procéder à l’installation, nous devons ajouter le dépôt EPEL aux sources du logiciel système.
Sur Debian et les distributions basées sur Debian, nous installons Rclone en utilisant apt :
sudo apt install rcloneRclone est également disponible dans le dépôt « extra » d’Archlinux; Nous pouvons installer le paquet avec PACMAN :
sudo pacman -S rcloneObtention d’identifiants d’API pour Google Drive
Pour les besoins de ce tutoriel, nous utiliserons Google Drive comme terrain d’essai de stockage en nuage pour Rclone. Bien qu’il soit possible d’utiliser les identifiants de l’API Google Drive natifs de Rclone, ceux-ci sont partagés entre tous les utilisateurs de Rclone et ont un nombre limité de requêtes par seconde. Pour assurer l’opérabilité, nous voudrons peut-être créer le nôtre.
Pour obtenir nos identifiants Google Drive, nous accédons à la console Google Cloud et ajoutons un nouveau projet. Nous cliquons sur le menu déroulant « Sélectionner un projet », puis sur « Nouveau projet » :
Nous devons choisir un nom pour notre projet. Ici, nous utilisons simplement « rclone » :
Une fois prêt, nous cliquons sur le bouton « créer ». Le projet sera créé à l’aide d’un identifiant généré au hasard. Pour sélectionner notre projet, nous cliquons encore une fois sur le menu déroulant « Sélectionner un projet ». Cette fois, cependant, nous choisissons le projet que nous venons de créer :
Comme prochaine étape, nous devons ajouter l’API Google Drive à notre projet. Nous recherchons « Google Drive API », et cliquons sur le premier résultat :
Une fois sur la page de l’API de Google Drive, nous activons l’API en cliquant sur le bouton « Activer »; nous serons redirigés vers la page de détails du service API. À ce stade, nous cliquons sur l’élément « Identifiants » dans le menu vertical de gauche :
Nous devons maintenant configurer un écran de consentement pour notre projet, donc nous cliquons sur le bouton « Configurer l’écran de consentement » :
Nous choisissons « Externe » comme type d’utilisateur, puis nous cliquons sur le bouton « Créer » :
À la page suivante, nous devons fournir des informations sur notre application. Au minimum, nous devons entrer le « nom de l’application », un courriel de soutien aux utilisateurs et les coordonnées du développeur. Lorsque nous sommes prêts, nous cliquons sur « Enregistrer et continuer » :
Ensuite, nous devons sélectionner les étendues à attribuer à notre application. Ce sont essentiellement les privilèges que l’application aura sur le stockage Google Drive. Pour ajouter un scope, on clique sur le bouton « Ajouter ou supprimer scopes », puis, pour s’assurer que Rclone est capable d’effectuer tout type d’opérations, on choisit .. /auth-docs, .. /auth-drive, et .. /auth/drive.metadata.readonly :
Une fois cela fait, nous cliquons sur le bouton « Mettre à jour », puis sur « Enregistrer et continuer ». Nous devons maintenant ajouter notre propre compte en tant qu’utilisateur de test. Nous cliquons sur le bouton « Ajouter des utilisateurs » et nous entrons l’adresse courriel que nous voulons utiliser. Lorsque nous avons terminé, nous cliquons sur le bouton « Ajouter », puis, encore une fois, sur « Enregistrer et continuer » :
Dans la page suivante, nous pourrons jeter un coup d’œil au résumé des paramètres de l’application. À ce stade, nous devons cliquer à nouveau sur l’entrée « Credentials » dans le menu vertical de gauche. Une fois sur la page des identifiants, nous cliquons sur « Créer des identifiants », puis sur « ID client OAuth » :
Dans la page suivante, nous sélectionnons « Application de bureau » comme type d’application. Nous pouvons laisser le nom du client généré automatiquement. Lorsque nous sommes prêts, nous cliquons sur le bouton « Créer » :
Les identifiants OAuth seront générés. Nous devrions en prendre note (nous pouvons facilement les récupérer plus tard à partir de la page « Credentials », de toute façon) :
Comme dernière étape, nous cliquons sur l’écran de consentement OAuth dans le menu vertical de gauche, puis sur le bouton « Publier l’application » :
Théoriquement, nous devrions préparer et soumettre l’application à Google pour vérification, mais nous devrions être en mesure d’utiliser l’application de toute façon. Maintenant que nous avons nos propres identifiants d’API Google Drive, nous pouvons voir comment configurer une télécommande Rclone.
Création d’une configuration Rclone Google Drive
Le moyen le plus simple de créer une configuration à distance Google Drive pour Rclone est d’utiliser la configuration guidée. Pour lancer l'« assistant », nous exécutons :
rclone configRclone nous demandera de choisir une action. Nous sélectionnons « n » pour créer une nouvelle télécommande :
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> nNous devons donner un nom pour le « téléjoueur ». Dans ce cas, nous utilisons simplement « gdrive » :
name> gdriveEnsuite, nous devons choisir le stockage en nuage approprié dans une liste. La position exacte de Google Drive dans la liste peut varier. Sur les versions récentes sur Rclone, il devrait être 18 :
Storage> 18À ce stade, nous devons entrer les identifiants Google Drive que nous avons générés à l’étape précédente :
client_id> <your-client-id-here>client_secret> <your-client-secret-here>Après avoir entré nos identifiants, nous devons sélectionner les étendues que Rclone doit utiliser. Dans ce cas, nous choisissons « 1 » :
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"
scope> 1Dans l’invite suivante, Rclone nous demande si nous voulons utiliser un fichier JSON d’informations d’identification de compte de service, nous pouvons laisser le champ vide et appuyer simplement sur « Entrée » :
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 value. Press Enter to leave empty.
service_account_file>Nous pouvons également ignorer l’édition de la configuration avancée :
Edit advanced config?
y) Yes
n) No (default)
y/n> nEnsuite, nous devons choisir si nous voulons utiliser une invite de navigateur pour authentifier Rclone avec notre application Google Drive. Nous répondons par l’affirmative :
Use web browser to automatically authenticate rclone with remote?
* Say Y if the machine running rclone has a web browser you can use
* Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes (default)
n) No
y/n> yDès que nous appuyons sur Entrée, un onglet du navigateur s’ouvre. Comme nous l’avons dit précédemment, nous verrons un avertissement puisque l’application n’est pas vérifiée par Google. Pour procéder à l’authentification, on clique sur « Avancé », puis sur « Aller à rclone (non sécuritaire) » :
Nous devons confirmer que nous voulons accorder à la demande les privilèges demandés. Pour confirmer, nous cliquons sur « Continuer » :
De retour dans le terminal, nous pouvons choisir si nous voulons configurer un Drive partagé. Dans ce cas, nous pouvons fournir une réponse négative :
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No (default)
y/n> nEnfin, pour confirmer et conserver la télécommande, nous répondons par l’affirmative à la dernière invite :
Keep this "gdrive" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> yPour quitter l’assistant, nous sélectionnons « q » dans la dernière invite :
Télécommandes actuelles :
Name Type
==== ====
gdrive drive
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> qUtilisation de rclone
Rclone fournit de nombreuses commandes que nous pouvons utiliser pour gérer les données sur le stockage en nuage. Ici, nous ne pouvons pas fournir une liste détaillée, mais nous pouvons voir comment effectuer des opérations de base telles que la copie, la synchronisation, le déplacement et la suppression de données.
Lister les fichiers et les répertoires sur le distant
Pour obtenir une liste des fichiers actuellement hébergés sur un stockage en nuage, nous exécutons rclone avec la commande ls. Pour voir les fichiers disponibles sur la télécommande Google Drive, nous exécuterions :
rclone ls gdrive:/La commande renvoie la sortie suivante :
37 file1.txt
5 file0.txtComme vous pouvez le constater, il n’y a que deux fichiers hébergés sur Google Drive : file1.txt et file0.txt : leur taille est indiquée au début de la ligne, en octets. Pour obtenir plus d’informations sur chaque fichier, on peut utiliser la commande lsl, qui renvoie également l’heure de modification :
rclone lsl gdrive:
37 2024-05-24 14:56:03.931000000 file1.txt
5 2024-05-24 14:55:55.889000000 file0.txtLes commandes ls et lsl fonctionnent toutes deux de manière récursive, de sorte qu’elles listent les fichiers également contenus dans des sous-répertoires, mais n’incluent pas de répertoires dans leur sortie. Pour récupérer une liste des répertoires existants sur le distant, nous utilisons la commande lsd :
rclone lsd gdrive:
-1 2024-05-24 15:47:24 -1 mydirContrairement à ls et lsl, lsd fonctionne de manière non récusative, à moins que nous n’utilisions l’option -R :
rclone lsd -R gdrive:
-1 2024-05-24 15:47:24 -1 mydir
-1 2024-05-24 15:52:41 -1 mydir/onePour lister les fichiers et les répertoires et obtenir une sortie facile à analyser, adaptée à être utilisée dans les scripts, nous pouvons utiliser deux autres commandes : lsf et lsjson. Les deux fonctionnent de manière non récursive; le premier ne renvoie que le nom des fichiers et des répertoires, un par ligne :
rclone lsf gdrive:
file0.txt
file1.txt
mydir/Ce dernier, au lieu de cela, renvoie la sortie au format JSON :
[
{"Path":"file0.txt","Name":"file0.txt","Size":5,"MimeType":"text/plain","ModTime":"2024-05-24T12:55:55.889Z","IsDir":false,"ID":"1keyQCpqiyQbiF6FWUjR4Mb2petECgFkE"},
{"Path":"file1.txt","Name":"file1.txt","Size":37,"MimeType":"text/plain","ModTime":"2024-05-24T12:56:03.931Z","IsDir":false,"ID":"1Aia5gGkvGEe40BlXQah7g3DZWjnCkxxJ"},
{"Path":"mydir","Name":"mydir","Size":-1,"MimeType":"inode/directory","ModTime":"2024-05-24T13:47:24.355Z","IsDir":true,"ID":"1qR6DF7ybJ29ghcUowvqiBowfxDNQf7yg"}
]Copie de fichiers et de répertoires
Pour copier des fichiers depuis et vers un stockage distant, nous utilisons la commande copier. Supposons que nous voulions copier file0.txt de Google Drive vers le répertoire de travail actuel sur localhost; nous exécuterions :
rclone copy gdrive:/file0.txt .Nous pouvons copier un répertoire de la même manière, mais nous devons nous rappeler que Rclone copie le contenu d’un répertoire, et non le répertoire lui-même. De plus, il saute la copie de sous-répertoires vides, à moins que nous n’utilisions l’option --create-empty-src-dirs.
Lors de l’utilisation de la copie, les fichiers existants sur la source qui n’existent pas sur la destination sont créés et les fichiers existants sont mis à jour. Parfois, nous voulons changer ce comportement pour que les fichiers existants sur la destination ne soient pas touchés. Un cas courant est lors de la copie d’une sauvegarde d’un dépôt local vers un dépôt distant, afin d’éviter de propager d’éventuelles corruptions d’anciens instantanés. Pour implémenter un tel comportement, nous pouvons utiliser l’option --immutable : cela fait échouer une opération de copie si elle implique la modification de fichiers existants sur la destination (notez cependant que ceci, au moment de la rédaction de cet article, ne fonctionne pas lors de la copie de fichiers individuels! – voir ce bogue ouvert sur le dépôt GitHub de Rclone).
Déplacer et renommer des fichiers et des répertoires
Pour déplacer des fichiers, nous utilisons la commande move. Supposons que nous voulions déplacer file0.txt, de l’hôte distant à notre hôte local. Nous dirions :
rclone move gdrive:/file0.txt .Comme il s’agit d’une opération potentiellement destructrice, nous pouvons d’abord lancer la commande avec l’option --dry-run, qui simule simplement l’opération.
Si nous voulons renommer un fichier, nous utilisons la commande moveto. Supposons que nous voulions renommer file0.txt en file00.txt sur la télécommande; nous dirions :
rclone moveto gdrive:/file0.txt gdrive:/file00.txtLa même commande peut être utilisée si nous voulons télécharger un fichier, mais le stocker avec un autre nom :
rclone moveto file0.txt gdrive:/file00.txtSynchronisation des répertoires avec la commande sync
Une autre commande que nous pouvons utiliser pour copier des données depuis et vers un stockage distant est la synchronisation. La principale différence entre la synchronisation et la copie est que la première crée une copie miroir de la source vers la destination. En d’autres termes, les fichiers qui existent sur la source, mais pas sur la destination, sont copiés et les fichiers modifiés sont mis à jour. De plus, les fichiers qui n’existent pas sur la source mais qui sont présents sur la destination, sont supprimés.
Supposons que nous voulions synchroniser le contenu du répertoire mydir local, avec le même répertoire sur le distant (il est créé s’il n’existe pas); nous exécuterions :
rclone sync mydir gdrive:/mydirVous pouvez facilement comprendre pourquoi cette commande doit être utilisée avec prudence. Il est également possible d’utiliser l’option --imutable lors de l’utilisation de la commande sync; cela fera en sorte que la commande refusera de mettre à jour les fichiers modifiés, alors qu’elle pourra toujours supprimer les fichiers à destination qui n’existent pas à la source.
Suppression de fichiers et de répertoires
Pour supprimer des fichiers et des répertoires, nous pouvons utiliser la commande delete. En supposant que nous voulions supprimer le fichier file0.txt sur la télécommande, nous exécuterions :
rclone delete gdrive:/file0.txtLorsque nous utilisons la commande delete sur un répertoire, seul le contenu du répertoire est supprimé, tandis que le répertoire lui-même reste en place. Si le répertoire contient des sous-répertoires, ils seront également laissés intacts, à moins que nous n’utilisions l’option --rmdirs (le répertoire racine sera toujours préservé).
Pour supprimer tous les fichiers sauf certains dans un répertoire, nous pouvons spécifier un modèle comme argument de l’option --exclude. Pour supprimer tous les fichiers du répertoire « mydir », sauf ceux avec l’extension « .txt », par exemple, nous exécuterions :
rclone delete --exclude=*.txt gdrive:/mydirLes fichiers peuvent également être filtrés en fonction de leur taille et d’autres paramètres. Juste à titre d’exemple, pour supprimer uniquement les fichiers >= 100 MiB, nous utiliserions :
rclone delete --min-size=100MiB gdrive:/mydirPour nous assurer de ne supprimer que des fichiers uniques, nous pouvons utiliser la commande deletefile. Enfin, pour supprimer un répertoire avec son contenu, nous pouvons utiliser la commande purge :
rclone purge gdrive:/mydirPar défaut, les fichiers et répertoires supprimés sont déplacés vers la corbeille de Google Drive : pour supprimer un fichier en sautant la corbeille, nous pouvons cependant utiliser l’option --drive-use-trash=false. Pour lister les fichiers corbeilles, nous utilisons la commande ls avec l’option --drive-trashed-only. Enfin, pour vider la corbeille, nous utilisons la commande the cleanup :
rclone cleanup gdrive:/Montage du stockage distant en tant que système de fichiers
Rclone est capable de monter un stockage distant comme un disque réseau, en utilisant fuse (système de fichiers dans l’espace utilisateur). Dans notre cas, pour monter la télécommande « gdrive » sur le répertoire ~/Public, nous exécuterions :
rclone mount gdrive:/ ~/PublicLorsqu’elle est lancée au premier plan, la commande bloque le terminal tant que la télécommande est montée. Pour démonter le système de fichiers, nous pouvons simplement appuyer sur CTRL-c ou envoyer explicitement un signal SIGINT ou SIGTERM au processus.
Réflexions finales
Dans ce tutoriel, nous avons vu comment installer Rclone sur certaines des distributions Linux les plus utilisées et comment l’utiliser pour effectuer des opérations de base sur un stockage distant. Dans le processus, nous avons appris comment obtenir les identifiants de l’API Google Drive et comment créer une configuration à distance Google Drive pour Rclone. Il y a beaucoup plus à faire avec Rclone que ce dont nous avons parlé dans cet article; Pour en savoir plus sur toutes les commandes disponibles et leurs options, veuillez jeter un coup d’œil au site officiel du projet ou exécuter chaque commande avec l’option -h.
















