Objectif de ce guide

Envoyez un classeur local dans une session RDP, puis récupérez-le sans modification. Vous vérifierez l’état du transfert et son SHA-256 avant d’appliquer le même processus à un résultat enregistré par une application distante. Ces étapes reposent sur l’interface de rdp-cli 0.1.0 et le flux de fichiers vérifié le 21 septembre 2026. Il s’agit d’un guide de reproduction, pas d’un nouveau test exécuté pour cet article.

Préparer la session et le fichier

Téléchargez la version adaptée à votre ordinateur, puis suivez le démarrage rapide pour vous connecter à un serveur Windows RDP autorisé. Conservez data.session et remplacez SESSION. Le serveur doit autoriser la redirection de lecteurs et l’appelant doit disposer des droits sur les fichiers. VNC ne fournit pas ce lecteur d’échange.

Chaque session possède son propre répertoire d’échange. --path est relatif à ce répertoire, et non un chemin Windows quelconque comme C:\Users\.... L’application distante y accède par un lecteur redirigé. Les commandes de fichiers n’exigent ni visionneuse ni prise de contrôle du clavier ou de la souris.

Enregistrez le classeur d’exemple dans le répertoire local courant sous service-activity.xlsx. Il contient 12 mois de données de service fictives et fait 4 489 octets. Les exemples utilisent rdp-cli dans PATH. Sous Windows, placez-vous dans le dossier de l’EXE et utilisez .\rdp-cli.exe ; sous Linux, utilisez la commande installée ou ./rdp-cli-linux-x86_64 / ./rdp-cli-linux-arm64.

rdp-cli status --session SESSION
rdp-cli files list --session SESSION

Vérifiez la connexion, les capacités négociées et la réponse de la liste. Si l’accès aux fichiers est indisponible, examinez d’abord la stratégie du serveur ou les autorisations.

Envoyer et attendre la fin

rdp-cli files upload --session SESSION --local ./service-activity.xlsx --path service-activity.xlsx

Un démarrage accepté peut renvoyer data.state: queued et data.transfer_id. Conservez cet identifiant comme TRANSFER_ID. L’acceptation ne prouve pas que la copie est terminée.

rdp-cli files status --session SESSION --transfer-id TRANSFER_ID

Dans la réponse de statut, lisez data.state, comparez data.bytes_transferred à data.total_bytes et vérifiez l’empreinte du fichier terminé dans data.files[].sha256.

Répétez la consultation jusqu’à un état final. Continuez uniquement avec completed, les 4 489 octets attendus et l’empreinte vérifiée. L’application distante peut alors ouvrir le classeur dans le lecteur redirigé de cette session. Un nom visible dans une liste ne suffit pas à prouver la fin du transfert.

Récupérer et comparer les octets

Ne modifiez pas le classeur pendant ce premier aller-retour :

rdp-cli files download --session SESSION --path service-activity.xlsx --local ./service-activity-returned.xlsx

Le téléchargement renvoie un nouveau data.transfer_id. Utilisez cet identifiant avec files status. Après completed, le fichier local est service-activity-returned.xlsx. Comparez les deux fichiers sous macOS :

shasum -a 256 ./service-activity.xlsx ./service-activity-returned.xlsx

Sous Linux :

sha256sum ./service-activity.xlsx ./service-activity-returned.xlsx

Sous Windows PowerShell :

Get-FileHash -Algorithm SHA256 .\service-activity.xlsx, .\service-activity-returned.xlsx

Les deux empreintes doivent être 1869e5708fe8922a99ff3efee1c0d285df3dd94588d59f5ad48f282db915df51. Si vous avez modifié le classeur à distance, il ne doit plus nécessairement correspondre à l’original. Enregistrez le résultat dans le lecteur d’échange, récupérez son chemin et vérifiez son contenu.

Transférer un dossier entier

Préparez un dossier local source-folder avec les fichiers à envoyer :

rdp-cli files upload --session SESSION --local ./source-folder --path source-folder

Attendez la fin de cet envoi avant de récupérer le dossier :

rdp-cli files download --session SESSION --path source-folder --local ./received-folder

Consultez chaque transfert séparément. L’arborescence et les répertoires vides sont conservés ; ./received-folder désigne exactement la racine de destination. Les fichiers d’un dossier sont finalisés individuellement. Un état partial ou une annulation peut laisser des fichiers déjà terminés : l’arborescence entière ne constitue pas une transaction atomique unique.

Récupérer sans répéter une opération incertaine

  • Destination existante : choisissez un autre chemin ou ajoutez --overwrite uniquement pour un remplacement voulu. L’écrasement n’est pas activé par défaut.
  • FILE_BUSY : attendez la fin de l’enregistrement ou de l’export dans l’application distante, puis examinez le fichier et le transfert avant de réessayer.
  • Réponse initiale perdue : consultez rdp-cli files status --session SESSION pour retrouver les transferts connus. Ne répétez pas immédiatement un envoi ou un écrasement dont le résultat est inconnu.
  • failed, partial ou cancelled : vérifiez les résultats par fichier et la cause. Les fichiers terminés peuvent rester présents. Une déconnexion ou la perte des droits peut arrêter le transfert ; une nouvelle connexion ne le reprend pas automatiquement.
  • Chemin invalide : utilisez un chemin relatif à l’échange avec des /. Les chemins absolus, .., liens dangereux et noms en conflit sont refusés.

Pour arrêter un transfert connu, utilisez son véritable identifiant puis vérifiez son état :

rdp-cli files cancel --session SESSION --transfer-id TRANSFER_ID

La pause de la saisie du bureau n’annule pas les transferts. completed confirme une copie d’octets, pas la justesse du rapport créé par l’application.

Passer à un résultat distant vérifié

Le cas LibreOffice Calc suit le même cycle envoi → édition distante → récupération. Vous y trouverez le rapport réellement enregistré, la capture originale, les formules et les totaux vérifiés. Consultez les capacités de fichiers et limites des protocoles avant de reproduire ce flux ailleurs.