Comment gérer des 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 des fichiers sur des services de stockage en nuage tels que 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 la copie, la synchronisation, le déplacement et la suppression de données. Dans le processus, nous voyons également comment obtenir les informations d’identification de l’API Google Drive et comment configurer une télécommande Google Drive pour Rclone.
Dans ce tutoriel, vous allez apprendre :
- Comment installer Rclone sur certaines des distributions Linux les plus utilisées
- Comment obtenir les informations d’identification 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 référentiel 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’informations d’identification API pour Google Drive
Pour les besoins de ce tutoriel, nous allons utiliser Google Drive comme terrain d’essai de stockage cloud pour Rclone. Bien qu’il soit possible d’utiliser les informations d’identification natives de l’API Google Drive de Rclone, celles-ci sont partagées entre tous les utilisateurs de Rclone et ont un nombre limité de requêtes par seconde. Pour garantir l’opérabilité, nous pouvons créer les nôtres.
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éé avec un ID généré de manière aléatoire. Pour sélectionner notre projet, nous cliquons à nouveau 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 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, nous cliquons donc sur le bouton « Configurer l’écran de consentement » :
Nous choisissons « Externe » comme type d’utilisateur, puis nous cliquons sur le bouton « Créer » :
Dans la page suivante, nous devons fournir des informations sur notre application. Au minimum, nous devons saisir le « Nom de l’application », l’adresse e-mail de l’assistance utilisateur et les coordonnées du développeur. Lorsque vous êtes prêt, nous cliquons sur « Enregistrer et continuer » :
Ensuite, nous devons sélectionner les étendues à attribuer à notre application. Il s’agit essentiellement des privilèges dont l’application disposera sur le stockage Google Drive. Pour ajouter un scope, nous cliquons sur le bouton « Ajouter ou supprimer des scopes », puis, pour nous assurer que Rclone est capable d’effectuer tous types d’opérations, nous choisissons .. /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 test. Nous cliquons sur le bouton « Ajouter des utilisateurs », et nous entrons l’adresse e-mail que nous voulons utiliser. Une fois cela fait, nous cliquons sur le bouton « Ajouter », puis, une fois de plus, 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 « Identifiants » dans le menu vertical de gauche. Une fois dans 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 vous êtes prêt, nous cliquons sur le bouton « Créer » :
Les informations d’identification OAuth seront générées. Nous devrions les noter (nous pouvons facilement les récupérer plus tard à partir de la page « Références », 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, cependant, nous devrions être en mesure d’utiliser « l’application » de toute façon. Maintenant que nous disposons de nos propres informations d’identification de l’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 à la « télécommande ». 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 de 18 :
Storage> 18À ce stade, nous devons entrer les informations d’identification Google Drive que nous avons générées à l’étape précédente :
client_id> <your-client-id-here>client_secret> <your-client-secret-here>Après avoir entré nos informations d’identification, 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 simplement appuyer 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 la modification 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 du 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 car 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écurisé) » :
Nous devons confirmer que nous voulons accorder à l’application 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 apporter 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.
Liste des fichiers et des répertoires sur la télécommande
Pour obtenir une liste des fichiers actuellement hébergés sur un stockage cloud, 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 le résultat suivant :
37 file1.txt
5 file0.txtComme vous pouvez le voir, il n’y a que deux fichiers hébergés sur Google Drive : file1.txt et file0.txt : leur taille est signalée en début de ligne, en octets. Pour obtenir plus d’informations sur chaque fichier, nous pouvons utiliser la commande lsl, qui renvoie également le temps 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 répertorient les fichiers également contenus dans les sous-répertoires, mais n’incluent pas de répertoires dans leur sortie. Pour récupérer réellement 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écusatrice, à 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 à une utilisation dans des scripts, nous pouvons utiliser deux autres commandes : lsf et lsjson. Les deux fonctionnent de manière non récursive ; Le premier renvoie uniquement le nom des fichiers et des répertoires, un par ligne :
rclone lsf gdrive:
file0.txt
file1.txt
mydir/Ce dernier, en revanche, 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 copy. Supposons que nous voulions copier file0.txt de Google Drive vers le répertoire de travail actuel sur localhost ; Nous courrions :
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, pas le répertoire lui-même. De plus, il saute la copie des 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 modifier ce comportement afin que les fichiers existants sur la destination ne soient pas touchés. Un cas courant est 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 provoque l’échec d’une opération de copie si cela implique la modification de fichiers existants sur la destination (notez, cependant, que cela, au moment de la rédaction, ne fonctionne pas lors de la copie de fichiers uniques ! – voir ce bogue ouvert sur le dépôt GitHub de Rclone).
Déplacement et renommage de fichiers et de répertoires
Pour déplacer des fichiers, nous utilisons la commande move. Supposons que nous voulions déplacer file0.txt, du distant vers notre hôte local. Nous courrions :
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 ne fait que simuler l’opération.
Si nous voulons renommer un fichier, nous utilisons la commande moveto. Supposons que nous voulions renommer file0.txt pour file00.txt sur la télécommande ; Nous courrions :
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 sous 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 local mydir, avec le même répertoire sur le répertoire distant (il est créé s’il n’existe pas) ; Nous courrions :
rclone sync mydir gdrive:/mydirVous pouvez facilement comprendre pourquoi cette commande doit être utilisée avec prudence. Il est possible d’utiliser l’option --imutable également lors de l’utilisation de la commande sync ; Cela entraînera le refus de la commande de mettre à jour les fichiers modifiés, alors qu’elle sera toujours en mesure de supprimer des fichiers sur la destination qui n’existent pas sur la source.
Suppression de fichiers et de répertoires
Pour supprimer des fichiers et des répertoires, nous pouvons utiliser la commande delete. Supposons 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 conservé).
Pour supprimer tous les fichiers sauf certains à l’intérieur d’un répertoire, nous pouvons spécifier un motif comme argument de l’option --exclude. Pour supprimer tous les fichiers du répertoire « mydir », à l’exception de 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. À titre d’exemple, pour supprimer uniquement les fichiers >= 100 Mo, nous exécuterions :
rclone delete --min-size=100MiB gdrive:/mydirPour nous assurer que nous ne supprimons 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, cependant, nous pouvons utiliser l’option --drive-use-trash=false. Pour lister les fichiers mis à la corbeille, nous utilisons la commande ls avec l’option --drive-trashed-only. Enfin, pour vider la corbeille, nous utilisons la commande cleanup :
rclone cleanup gdrive:/Montage du stockage distant en tant que système de fichiers
Rclone est capable de monter un stockage distant en tant que 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. Au cours du processus, nous avons appris comment obtenir les informations d’identification 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.
















