Transfert de données
This site replaces the former Compute Canada documentation site, and is now being managed by the Digital Research Alliance of Canada. Ce site remplace l'ancien site de documentation de Calcul Canada et est maintenant géré par l'Alliance de recherche numérique du Canada. |
Pour transférer des données à partir ou en direction des grappes, veuillez utiliser les nœuds de copie plutôt que les nœuds de connexion. Pour connaître l'adresse URL d'un nœud de copie, consultez le tableau au haut des pages pour Béluga, Narval, Cedar, Graham et Niagara.
Globus utilise automatiquement les nœuds de copie.
Entre un ordinateur personnel et nos équipements
Pour télécharger ou téléverser des fichiers entre votre ordinateur et notre infrastructure, vous devez utiliser un logiciel offrant une fonctionnalité de transfert sécuritaire.
- Dans un environnement de lignes de commandes sous Linux ou Mac OS X, utilisez les commandes
scp
etsftp
. - Sous Windows, MobaXterm offre des fonctions de transfert de fichiers et une interface lignes de commandes via SSH; un autre programme gratuit pour le transfert de données est WinSCP. Pour configurer une connexion via clés SSH avec WinSCP, voyez ces directives.
Les commandes pscp
et psftp
de PuTTY fonctionnent sensiblement comme les commandes sous Linux et Mac.
S'il faut plus d'une minute pour transférer des fichiers entre votre ordinateur et nos serveurs, nous vous suggérons d'installer Globus Connect Personal et d'en faire l'essai; consultez la section Ordinateurs personnels. Le transfert avec Globus peut être configuré et fonctionner en arrière-plan, sans intervention.
Entre nos équipements
Globus est l'outil privilégié et devrait être utilisé autant que possible.
D'autres outils de transfert connus peuvent être utilisés pour des transferts entre nos équipements et entre un autre ordinateur et nos équipements, soit
Remarque : Pour transférer des fichiers entre une autre grappe et Niagara, utilisez l'indicateur SSH -A
en vous connectant à l'autre grappe. Par exemple, pour copier des fichiers de Cedar à Niagara, la commande serait
ssh -A USERNAME@cedar.computecanada.ca
Effectuez ensuite la copie avec
[USERNAME@cedar5 ~]$ scp file USERNAME@niagara.computecanada.ca:/scratch/g/group/USERNAME/
À partir du web
Pour transférer des données à partir d'un site Web, utilisez wget ou curl. Voyez une comparaison de ces outils sur la page Unix & Linux Stack Exchange. Pour transférer des données à partir de Google Cloud, Google Drive ou Google Photos, vous pouvez utiliser rclone. Les outils wget, curl et rclone sont disponibles sur nos grappes sans que vous deviez charger un module en particulier.
Synchroniser les données
La synchronisation de données a pour but de faire correspondre le contenu de deux sources de données situées à différents endroits. Il y a plusieurs façons de procéder; les plus courantes sont décrites ici.
Transfert avec Globus
Globus est un outil performant et fiable.
Lors d'un transfert avec Globus, les données provenant de la source écrasent habituellement les données dans la destination; toutes les données de la source sont donc transférées. Dans certains cas, les fichiers existent déjà à la destination; s'ils sont identiques à ceux de la source, il n'est pas nécessaire de les transférer. Sous Transfer Settings, le paramètre sync détermine comment Globus choisit les fichiers à transférer.
Les options de sélection des fichiers sont :
checksum is different | examine les sommes de contrôle (checksum) pour détecter un changement ou une erreur de contenu dans des fichiers de même taille. Cette option ralentit considérablement le transfert, mais offre la plus grande précision. |
file doesn't exist on destination | transfère uniquement les fichiers créés depuis la dernière synchronisation. Cette option est utile si vos fichiers sont créés par incréments. |
file size is different | transfère les fichiers dont la taille a été modifiée, assumant que le contenu aussi a été modifié. Cette option permet un test rapide. |
modification time is newer | transfère uniquement les fichiers dont l'estampille temporelle (timestamp) de la source est postérieure à celle de la destination. Avec cette option, cochez preserve source file modification times. |
Pour plus d'information, consultez la page Globus.
rsync
L'utilitaire rsync vérifie la similitude entre deux jeux de données; il nécessite toutefois un temps considérable lorsqu'il y a un grand nombre de fichiers, que les sites sont à grande distance l'un de l'autre, ou qu'ils se trouvent sur des réseaux différents.
rsync
compare les dates de modification et la taille des fichiers et fait le transfert uniquement si l'un des paramètres ne concorde pas.
Si les dates de modification sont susceptibles de différer, l'option -c
analyse les checksums à la source et à la destination et transfère uniquement les fichiers dont les valeurs ne concordent pas.
Quand vous transférez des données vers les systèmes de fichiers /project
, n'utilisez pas les indicateurs -p
et -g
(ou -a
qui sous-entend les deux). Les quotas pour /project
sont calculés selon la propriété de groupe et le fait de conserver la même propriété produira une erreur avec le message Disk quota exceeded.
Si vous transférez des fichiers vers /project
avec l'option -a
, vous pouvez y ajouter --no-g --no-p
comme suit ː
[name@server ~]$ rsync -avz --no-g --no-p LOCALNAME someuser@graham.computecanada.ca:projects/def-professor/someuser/
ou simplement omettre l'option -a
[name@server ~]$ rsync -rltv LOCALNAME someuser@graham.computecanada.ca:projects/def-professor/someuser/
LOCALNAME peut être un fichier ou un répertoire. Pour les grands transferts, vous pouvez ajouter --partial pour pouvoir redémarrer le transfert et/ou --progress pour obtenir le sommaire du déroulement.
Comparaison des sommes de contrôle (checksums)
Si vous ne pouvez p-as utiliser Globus pour synchroniser deux systèmes et si rsync est trop lent, les deux systèmes peuvent être comparés avec un utilitaire checksum. L'exemple suivant utilise sha1sum
.
[name@server ~]$ find /home/username/ -type f -print0 | xargs -0 sha1sum | tee checksum-result.log
Cette commande crée dans le répertoire courant un nouveau fichier nommé checksum-result.log contenant toutes les sommes de contrôle des fichiers situés dans /home/username/; les sommes sont affichées pendant que le processus se déroule. Lorsqu'il y a un grand nombre de fichiers ou dans le cas de fichiers de très grande taille, rsync peut travailler en arrière-plan en mode screen, tmux ou tout autre moyen lui permettant d'opérer malgré un bris de la connexion SSH.
Une fois l'opération terminée, l'utilitaire diff
trouvera les fichiers qui ne concordent pas.
[name@server ~]$ diff checksum-result-silo.log checksum-dtn.log
69c69
< 017f14f6a1a194a5f791836d93d14beead0a5115 /home/username/file-0025048576-0000008
---
> 8836913c2cc2272c017d0455f70cf0d698daadb3 /home/username/file-0025048576-0000008
Il est possible que la commande find
emprunte un ordre différent, détectant ainsi de fausses différences; pour contrer ceci, lancez la commande sort
sur les deux fichiers avant de lancer diff
, comme suit :
[name@server ~]$ sort -k2 checksum-result-silo.log -o checksum-result-silo.log
[name@server ~]$ sort -k2 checksum-dtn.log -o checksum-dtn.log
SFTP
Pour transférer des fichiers, SFTP (pour Secure File Transfer Protocol) utilise le protocole SSH qui chiffre les données transférées.
Dans l'exemple suivant, l'utilisateur USERNAME
transfère des fichiers à distance vers ADDRESS
.
[name@server]$ sftp USERNAME@ADDRESS
The authenticity of host 'ADDRESS (###.###.###.##)' can't be established.
RSA key fingerprint is ##:##:##:##:##:##:##:##:##:##:##:##:##:##:##:##.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ADDRESS,###.###.###.##' (RSA) to the list of known hosts.
USERNAME@ADDRESS's password:
Connected to ADDRESS.
sftp>
L'authentification avec l'option -i
peut se faire en utilisant une clé SSH.
[name@server]$ sftp -i /home/name/.ssh/id_rsa USERNAME@ADDRESS
Connected to ADDRESS.
sftp>
À l'invite sftp>
, vous entrez les commandes de transfert; utilisez la commande help
pour obtenir la liste des commandes disponibles.
Des applications graphiques sont aussi disponibles :
- WinSCP et MobaXterm sous Windows,
- filezilla sous Windows, Mac et Linux,
- cyberduck, sous Mac et Windows.
SCP
SCP est l'abréviation de secure copy protocol. Comme SFTP, SCP utilise le protocole SSH pour chiffrer les données qui sont transférées. Contrairement à Globus ou rsync, SCP ne gère pas la synchronisation. Les cas d'utilisation de SCP suivants sont parmi les plus fréquents :
[name@server ~]$ scp foo.txt username@beluga.computecanada.ca:work/
Cette commande transfère le fichier foo.txt
qui se trouve dans le répertoire courant de mon ordinateur vers le répertoire $HOME/work
de la grappe Béluga. Pour transférer le fichier output.dat
qui se trouve dans mon espace /project de la grappe Cedar vers mon ordinateur local, je pourrais utiliser une commande comme
[name@server ~]$ scp username@cedar.computecanada.ca:projects/def-jdoe/username/results/output.dat .
Voyez d'autres exemples. Prenez note que vous lancez toujours la commande scp
à partir de votre ordinateur et non à partir de la grappe : la connexion SCP doit toujours être initiée à partir de votre ordinateur, peu importe la direction dans laquelle vous transférez les données.
L'option -r
permet de faire un transfert récursif d'un groupe de répertoires et fichiers. Il n'est pas recommandé d'utiliser scp -r
pour transférer des données vers /project
parce que le bit setGID est désactivé dans les répertoires qui sont créés, ce qui peut générer des erreurs semblables à Disk quota exceeded
lors de la création ultérieure de fichiers; voyez Message Disk quota exceeded.
***Attention :*** si vous utilisez un nom de clé SSH personnalisé, c'est-à-dire autre chose que les noms par défaut id_dsa
, id_ecdsa
, id_ed25519
et id_rsa
, vous devez utiliser l'option scp -i
, suivie du chemin vers votre clé privée ainsi
[name@server ~]$ scp -i /path/to/key foo.txt username@beluga.computecanada.ca:work/