
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.
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.
Vérifiez les configurations disponibles et le tarif actuel dans la console Compute avant de lancer une instance.
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.
Démarrez la configuration interactive :
rclone config
Ajoutez une configuration distante, appelée « remote » dans rclone :
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, 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
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
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.--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
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é.
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.
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.
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.
--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.
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.
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"
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.
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.