Skip to content

Utilisation de rclone en local

Rclone est un programme en ligne de commande pour faire du stockage rsync sur le cloud. Dans le cas présent, il permet de faire du transfert de fichiers et répertoires entre un ordinateur en local et le cloud OSCAR déployé au Mésocentre sans avoir à passer par un point de montage sur le cluster de calcul HPC2.

Installation de rclone

Pour l'installer sur votre ordinateur, selon votre distribution Linux, faites

$ sudo apt-get install rclone
$ sudo yum install rclone
$ sudo pacman -S rclone
ou bien téléchargez le binaire depuis le site rclone.org quelque soit votre OS (Linux/macOS/Windows/...)

Si vous téléchargez rclone depuis le site web, ouvrir l'archive et copier le fichier rclone dans votre répertoire ~/.local/bin

Configuration préalable pour rclone

Tout d'abord, contactez le support pour demander la création d'un compte. On vous fournira alors vos clés d'accès (MYACCESSKEY et MYSECRETKEY) que vous utiliserez dans le fichier rclone.conf ci-dessous.

Créez un fichier ~/.config/rclone/rclone.conf avec pour contenu :

[oscarceph]
type = s3
provider = Ceph
env_auth = false
access_key_id = MYACCESSKEY
secret_access_key = MYSECRETKEY
region = fr-clermont-mesocentre
endpoint = https://s3.mesocentre.uca.fr
location_constraint = 
acl = 
server_side_encryption = 
storage_class = 

Pour vérifier dans un premier temps que l'accès au stockage S3, oscarceph, fonctionne :

$ rclone lsd oscarceph:

Commandes usuelles de rclone

Pour créer un nouveau bucket dans oscarceph (mkdir) :

$ rclone mkdir oscarceph:monBucket-42

Nom du bucket

Il est important de réfléchir au nom de son bucket :

  • un bucket ne peut pas être renommé ;
  • il est impossible de créer un bucket dont le nom a déjà été pris par un autre utilisateur ;
  • le nom du bucket doit respecter certaines règles.

Règles de nommage d'un bucket

Il convient de nommer un bucket en respectant les règles énoncées ici, en particulier pour pouvoir monter un bucket dans le système de fichiers en utilisant s3fs, le nom doit être compatible avec les règles DNS :

  • entre 3 et 63 caractères ;
  • les noms peuvent être composés de plusieurs mots séparés par des points (.), mais il est recommandé de ne pas inclure de points (.) dans les noms ;
  • les noms peuvent contenir des lettres minuscules, des chiffres, des tirets (-) ; le nom Mon_Bucket_De_Donnees n'est pas correct ;
  • les noms ne doivent pas ressembler à une adresse IP (ie 192.168.5.4) ;
  • les noms ne doivent pas commencer par un point (.monbucket) ;
  • les noms ne doivent pas se terminer par un point (monbucket.) ;
  • deux points ne doivent pas être adjacents (mon..bucket).

Pour lister le contenu d'un bucket en faisant (ls) :

$ rclone ls oscarceph:monBucket-42

Pour ajouter un répertoire à monBucket-42 (copy):

$ rclone copy /home/local/directory oscarceph:monBucket-42 --progress

Et pour le lister (ls):

$ rclone ls oscarceph:monBucket-42
2020-01-01 13:37      1085   directory

Attention, petite subtilité, si vous voulez envoyer uniquement le contenu d'un répertoire (et pas le répertoire lui-même), pensez à mettre un / après le nom :

$ rclone copy /home/local/directory/ oscarceph:monBucket-42 --progress

Pour connaître la taille de votre bucket (size) :

$  rclone size oscarceph:monBucket-42
Total objects: 259
Total size: 763.667 MBytes (800763253 Bytes)

Pour déplacer un fichier d'un endroit à un autre du bucket, ou de 2 buckets différents (move) :

$ rclone move oscarceph:monBucket-42/monFichier oscarceph:unAutreBucketExistant

Pour supprimer un fichier (delete) :

$ rclone delete oscarceph:monBucket-42/unFichier
Cette commande ne touche pas à la structure du bucket.

Pour supprimer un bucket (purge) :

$ rclone purge oscarceph:monBucket-42

Si vous avez besoin de synchroniser un répertoire local avec un répertoire S3, utilisez la commande sync. Elle utilisera les MD5 des fichiers pour savoir quoi envoyer et quoi mettre à jour sur votre S3 ou en local sur votre disque dur :

$ rclone sync /home/local/directory/ oscarceph:monBucket-42