[AS400] Transférer un Save File par FTP

Pour transférer un fichier d’un AS/400 à un autre, de multiples solutions sont disponibles, mais celle qui a retenu notre attention est celle qui prévoit l’emploi du client FTP intégré au système. Dans notre cas, nous voudrions transférer un fichier de type « Save File » vers un AS/400 distant.

Ces fichiers permettent en fait de sauvegarder des objets (librairies, fichiers) sans avoir à passer par des périphériques tels que les lecteurs de bandes. Ils peuvent eux-mêmes être sauvegardés sur cassette par la suite.

Créer le fichier Save File

La première étape consiste à créer un fichier de type *SAVF qui recevra nos librairies ou des objets que l’on souhaite sauvegarder. Dans notre cas, nous allons sauvegarder une bibliothèque qui se trouve dans QSYS et qui s’appelle DTARCH0002. Elle contient plusieurs fichiers physiques (c’est un peu l’équivalent de tables d’une base de données, puisque on peut tout à fait les interroger par SQL).

Depuis l’AS/400 source

Créer le fichier Save File dans la bibliothèque de notre choix :

CRTSAVF JOSE/DTARCH1200

En rouge, il s’agit de la librairie de destination où sera stocké le fichier. En vert, il s’agit du futur nom pour le Save File. Ce fichier est vide. Remarque : on pourrait récupérer un fichier existant et exécuter la commande CLRSAVF.Il faut ensuite sauvegarder les objets ou bien les librairies en utilisant les commandes SAVOBJ ou bien SAVLIB. Dans notre cas, nous voulons sauvegarder une librairie (DTARCH002) et tous les objets qu’elle contient. Nous allons donc plutôt utiliser la commande SAVLIB, telle que :

SAVLIB LIB(DTARCH0002) DEV(*SAVF) SAVF(JOSE/DTARCH1200)

Transférer le fichier par FTP

Depuis l’AS/400 source

Il faut maintenant se connecter au serveur de l’AS/400 distant. La commande qui suit permet de lancer un client FTP. On lui passe en paramètre l’adresse de l’autre IBM, sur lequel on veut transférer le fichier.

STRTCPFTP RMTSYS(‘ADRESSE_IP’)

Lorsque le client est connecté, il faut saisir le nom d’utilisateur, suivi de [Entrée]. Le système distant demande alors de saisir le mot de passe pour l’utilisateur. Ne vous inquiétez pas si rien ne s’affiche lors de la saisie. Appuyez sur [Entrée] lorsque c’est bon. Vous devriez obtenir un écran similaire à ceci :

Nous allons donc maintenant nous positionner dans la librairie locale, où se trouve notre fichier *SAVF. Il y a une commande très utile pour cela : lcd (« local change directory« ).

LCD JOSE

Nous devons aussi nous positionner dans le dossier de travail sur la machine distante. Il s’agit aussi d’une librairie, et pour faciliter les choses, nous allons nous positionner dans la même. On va donc transférer un fichier depuis la librairie JOSE depuis le premier AS/400 vers la librairie du même nom sur la seconde machine.

CD JOSE

Nous devons avoir sur la machine distante, un fichier de type Save File existant pour la copie, comme mentionné dans la documentation officielle IBM :

When transferring a *SAVF file using name format 0, the save file on the receiving system must be pre-created. It is recommended that files are pre-created in other situations as well for reasons of performance and integrity. The transfer of a save file–because it is a file format peculiar to iSeries(TM)–can only be made usable if the sending and receiving servers are both iSeries servers. However, a save file could be sent to a non-iSeries server and stored there for backup purposes. The save file could be transferred later to the iSeries with FTP.

Pour cela, nous allons exécuter une commande sur le serveur distant. Il faut s’assurer que l’utilisateur avec lequel on a ouvert la connexion, ait bien les droits suffisants pour réaliser cette opération. Le fichier sera créé au même endroit.

QUOTE RCMD CRTSAVF JOSE/DTARCH1200

Ensuite, on passe en mode binaire pour le transfert de fichier, via la commande

binary

On peut alors démarrer le transfert de la manière suivante :

PUT DTARCH1200

Restaurer les objets depuis le Save File

Deux solutions

  • Soit directement depuis le client FTP en utilisant la commande QUOTE RCMD suivi de RSTLIB / RSTOBJ et les paramètres corrects (voir l’exemple ci-dessous).
  • Soit depuis la seconde machine sur laquelle on a envoyé l’objet, en exécutant directement la bonne commande de restauration (voir l’exemple ci-dessous).

Exemple de commande

RSTLIB SAVLIB(DTARCH0002) DEV(*SAVF) SAVF(JOSE/DTARCH1200)

En bleu, on retrouve la librairie qui avait été sauvegardée en local sur l’AS/400 source. En rouge, on donne la librairie où se trouve notre Save File et enfin, en vert, il s’agit du nom de ce fameux fichier. Normalement, le message retourné devrait être « X objets restaurés…« . Si ce n’est pas le cas, cela peut être dû à plusieurs raisons : la plus fréquente étant que le ou les objets de destination existent déjà.

Remerciements

Merci à Dominique Guebey. Son site est à la base de cet article. Pour plus d’informations, consultez les sources ci-dessous.

Sources

FTP et AS400
IBM : Transferring *SAVF Files

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *