← Blog
Publié le
2025-09-01

Déplacez rapidement le Big Data : rclone + checksums (modèles pratiques)

Voici une méthode reproductible pour transférer de grands jeux de données vers et depuis une instance de calcul GPU, avec des contrôles d’intégrité et des copies que vous pouvez relancer après une interruption.

Ce que cela couvre

  • Installer et configurer rclone dans un environnement Linux compatible
  • Copier vers ou depuis un stockage compatible S3 et des serveurs SSH/SFTP
  • Créer et vérifier des manifestes SHA-256
  • Relancer une copie après une déconnexion et vérifier le résultat
  • Choisir la taille des blocs, le parallélisme et la compression en fonction des mesures

Utilisez rclone pour le stockage objet et SFTP. Utilisez rsync pour les copies locales ou par SSH lorsque vous avez besoin de ses options de mise à jour des fichiers et de préservation des métadonnées POSIX.

Préparez votre environnement de calcul

Vérifiez les configurations disponibles et le tarif actuel dans la console Compute avant de lancer une instance.

Try Compute now

1) Installez rclone (une fois par modèle)

Ces exemples utilisent Bash sous Linux. Suivez les instructions officielles d’installation adaptées à votre image, à votre architecture et à vos droits d’accès, puis vérifiez la version. L’exemple d’archive nécessite aussi GNU tar, zstd et sha256sum. Remplacez les chemins et les noms de remotes, vérifiez les permissions et l’espace disponible, puis prévisualisez les copies avec --dry-run avant d’utiliser une destination contenant des données importantes.

rclone version

Intégrez rclone à l’image référencée par votre modèle personnalisé pour le retrouver dans les nouvelles instances. Un modèle conserve les paramètres de lancement et la référence de l’image, pas les logiciels installés ensuite dans un conteneur en cours d’exécution.

2) Configurer un stockage distant (S3 ou SSH)

Démarrez la configuration interactive :

rclone config

Ajoutez une configuration distante, appelée « remote » dans rclone :

  • S3 (AWS, MinIO, Wasabi, etc.) : choisissez s3, puis indiquez la région, le point de terminaison et les paramètres d’authentification du fournisseur. L’exemple par variables d’environnement ci-dessous concerne AWS S3.
  • SFTP/SSH : choisissez sftp, puis indiquez l’hôte, l’utilisateur, le port et la clé. Configurez known_hosts_file avec un fichier de clés d’hôtes de confiance. Vérifiez l’empreinte auprès de l’administrateur du serveur avant la connexion ; ne supposez pas que la clé d’hôte est vérifiée par défaut.

N’intégrez aucun secret aux images. Injectez les identifiants à l’exécution avec les droits minimaux nécessaires et limitez l’accès au fichier de configuration rclone. Les variables d’environnement et un fichier non chiffré ne constituent pas un coffre-fort.

Configuration par variables d’environnement : exemple AWS S3

# Injectez AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY comme secrets.
# Avec des identifiants temporaires, injectez aussi AWS_SESSION_TOKEN.
export RCLONE_CONFIG_MYREMOTE_TYPE=s3
export RCLONE_CONFIG_MYREMOTE_PROVIDER=AWS
export RCLONE_CONFIG_MYREMOTE_ENV_AUTH=true
# Remplacez cette région par celle du bucket.
export RCLONE_CONFIG_MYREMOTE_REGION=us-east-1

3) Copier les données et relancer après une interruption

Vers l’instance (S3 → stockage local)

# Téléchargez dans un répertoire dédié.
mkdir -p /data/projectA &&
rclone copy myremote:datasets/projectA /data/projectA \
--progress --transfers 4 --checkers 8

Depuis l’instance (stockage local → S3)

rclone copy /data/results myremote:results/projectA \
--progress --transfers 4 --checkers 8

  • Après une interruption : relancez la même commande copy. Les fichiers qui satisfont ses critères de comparaison sont ignorés. La reprise d’un fichier incomplet au dernier octet n’est pas garantie après l’arrêt de rclone ; elle dépend du stockage et de l’opération. Vérifiez le jeu de données obtenu.
  • Réglage : mesurez le débit et la mémoire avant d’augmenter le parallélisme. Pour les envois S3 multipart, les tampons augmentent avec le nombre de transferts, la concurrence par transfert et la taille des blocs. --fast-list consomme aussi de la mémoire. Modifiez un paramètre à la fois ; de gros blocs ne sont pas un réglage universel.

Exemple SSH/SFTP

rclone copy /data/results sftpremote:/srv/results/projectA \
--progress --transfers 4 --checkers 8 \
--sftp-known-hosts-file ~/.ssh/known_hosts

4) Intégrité : des manifestes SHA‑256 auxquels vous pouvez faire confiance

Créez le manifeste à partir d’un répertoire source stable de fichiers ordinaires et conservez-le hors de ce répertoire. Ne modifiez pas les fichiers pendant le calcul des empreintes ou le transfert. Choisissez un préfixe de destination propre à cette exécution. Protégez le manifeste par un canal de confiance ou une signature vérifiée : une somme de contrôle seule ne prouve pas l’identité de l’expéditeur.

Création d'un manifeste à la source

mkdir -p /data/manifests &&
rclone hashsum SHA256 /data/results > /data/manifests/projectA.SHA256SUMS.txt &&
rclone checksum SHA256 /data/manifests/projectA.SHA256SUMS.txt /data/results

Copier les données + le manifeste

# Continuez uniquement après la réussite du contrôle de la source.
rclone copy /data/results myremote:results/projectA --progress &&
rclone copyto /data/manifests/projectA.SHA256SUMS.txt \
myremote:manifests/projectA.SHA256SUMS.txt

Vérifier à destination (téléchargé)

# Obtenez d’abord le manifeste source par un canal de confiance.
# Remplacez ce chemin par son emplacement réel ; ne créez pas de fichier vide.
manifest=/trusted/manifests/projectA.SHA256SUMS.txt
test -s "$manifest" &&
rclone copy myremote:results/projectA ./projectA --progress &&
rclone checksum SHA256 "$manifest" ./projectA

Vérifier le contenu distant en le lisant

# Lit les objets via cette machine : des frais de requête ou de sortie sont possibles.
rclone checksum SHA256 /data/manifests/projectA.SHA256SUMS.txt \
myremote:results/projectA --download

Un contrôle rclone checksum réussi doit renvoyer le code de sortie 0. Sans --one-way, les fichiers supplémentaires à destination sont aussi signalés. SHA-256, MD5 et un ETag multipart ne sont pas interchangeables. Résolvez toute erreur ou absence de fichier avant de déclarer le transfert vérifié.

5) Synchronisation, copie et suppression en toute sécurité

  • copy ajoute ou met à jour des fichiers sans supprimer les fichiers supplémentaires à destination. Il peut écraser un fichier existant : gardez une sauvegarde indépendante ou utilisez une nouvelle destination.
  • sync rend la destination identique à la source, y compris en supprimant des fichiers. Utilisez uniquement une simulation pour examiner les changements :

rclone sync /data/results myremote:results/projectA --dry-run --delete-after --progress

Conservez --dry-run pendant l’examen de chaque changement. Ne le retirez qu’après vérification des chemins exacts, d’une sauvegarde indépendante et de l’autorisation de supprimer les fichiers présents seulement à destination. --delete-after change l’ordre des suppressions, sans protéger d’une mauvaise destination. Consultez les avertissements de rclone sync.

6) Moins de fichiers = transferts plus rapides (regroupez intelligemment)

Le traitement de millions de petits fichiers peut prendre beaucoup de temps par fichier. Regroupez un jeu de données stable si cela convient à vos besoins de récupération, puis mesurez la compression sur un échantillon représentatif.

# Nécessite GNU tar, zstd et sha256sum. Sortie hors du répertoire source.
# Choisissez un nouveau nom d’archive pour chaque exécution.
mkdir -p /data/bundles &&
tar -C /data/run123 -I 'zstd -T1 -3' -cf /data/bundles/run123.tar.zst . &&
(
cd /data/bundles &&
sha256sum run123.tar.zst > run123.tar.zst.sha256 &&
sha256sum -c run123.tar.zst.sha256 &&
rclone copyto run123.tar.zst myremote:runs/run123.tar.zst --progress &&
rclone copyto run123.tar.zst.sha256 myremote:manifests/run123.tar.zst.sha256
)

Cet exemple utilise un seul thread zstd et le niveau 3 comme point de départ, sans garantie de performance. Utilisez pigz si la compatibilité gzip est nécessaire. Dimensionnez les archives selon l’espace disponible et le coût d’un nouvel envoi. Vérifiez l’archive reçue à partir de son manifeste de confiance ; le contrôle local ne valide pas la copie distante.

7) Déplacer des données entre des compartiments ou des projets

Pour une copie entre fournisseurs, rclone fait normalement transiter les données par la machine qui exécute la commande, sans conserver une copie locale complète :

rclone copy awsA:bucketA/prefix gsB:bucketB/prefix --progress --transfers 4 --checkers 8

Les deux configurations distantes doivent disposer des autorisations nécessaires. Une copie côté serveur n’est possible que pour les combinaisons de stockages et de configurations prises en charge. Vérifiez les journaux, la bande passante et les frais de requête et de transfert.

8) Boutons de bande passante et de fiabilité

  • --bwlimit 100M limite le débit à 100 Mio/s, soit environ 839 Mbit/s, et non à 100 Mbit/s.
  • --retries 8 --low-level-retries 20 augmente le nombre de tentatives, mais peut retarder le signalement d’un échec. Corrigez les erreurs persistantes.
  • --timeout 2m --contimeout 10s règle les délais d’inactivité des entrées-sorties et de connexion. Ces valeurs peuvent faire échouer plus vite une liaison lente ; adaptez-les aux erreurs observées.
  • --checksum compare les fichiers avec un algorithme commun lorsqu’il est disponible. Ce n’est pas une garantie de vérification SHA-256 ; utilisez le manifeste décrit plus haut.

Consignez la commande et la version de rclone dans votre fiche d’exécution, en masquant les identifiants, jetons et URL signées.

9) rsync lorsque les deux extrémités sont POSIX

Pour les transferts SSH, installez rsync aux deux extrémités et vérifiez la clé d’hôte SSH. Cet exemple copie le contenu du répertoire source sans supprimer les fichiers présents seulement à destination :

rsync -avh --partial --partial-dir=.rsync-partial --progress \
/data/results/ user@host:/srv/results/projectA/

--partial-dir conserve les données partielles pour une exécution ultérieure ; empêchez les autres utilisateurs d’accéder à ce répertoire. -a ne comprend pas les liens physiques, les ACL ni les attributs étendus : examinez -H, -A et -X si nécessaire et si les deux systèmes les prennent en charge. Vérifiez ensuite les fichiers avec un manifeste SHA-256 de confiance.

10) Principes de base de la sécurité

  • Gardez les identifiants hors des images et du code source. Limitez l’accès aux fichiers de configuration, injectez les secrets à l’exécution et masquez-les dans les journaux.
  • Montez les secrets à l’exécution ; ne les ajoutez pas au dépôt de code.
  • Gardez les buckets privés. Utilisez des requêtes HTTPS authentifiées ou SFTP avec vérification de la clé d’hôte. Une URL présignée accorde un accès temporaire à un objet, mais ne rend pas privé un objet déjà public. Vérifiez les politiques d’accès et protégez ces URL comme des identifiants.

Extrait de méthodes (copier-coller)

transfers:
tool: "<version réelle de rclone>"
source:
type: "<stockage réel>"
url: "<chemin ou remote:bucket/prefix, sans secret>"
destination:
type: "<stockage réel>"
url: "<chemin ou remote:bucket/prefix, sans secret>"
command: |
rclone copy <src> <dst> --transfers 4 --checkers 8 --progress
manifest:
algo: "SHA256"
file: "<manifeste de confiance hors du répertoire transféré>"
verified: "oui | non"
verification_exit_code: "<résultat réel>"
notes: "instantané source, compression, tentatives, délais, date de vérification"

Lecture associée

Essayez Compute dès aujourd'hui

Choisissez une configuration GPU disponible et un environnement compatible dans Compute. Les modèles personnalisés permettent de réutiliser une image et ses paramètres de lancement ; vérifiez le tarif actuel avant de démarrer. La reprise dépend de la capacité disponible et les instances arrêtées ont une durée de conservation limitée. Exportez les données importantes avant toute terminaison. Si votre application nécessite de bonnes performances FP64, vérifiez l’adéquation du matériel avant de lancer le calcul.

‍

Votre prochaine charge de travail sur Hivenet.

Choisissez une charge de travail d’IA, de calcul ou de stockage à tester sur Hivenet, ou échangez avec notre équipe sur sa mise en production.