Bonjour, je vous explique la situation. J'ai actuellement deux serveurs dédiés linux, faisant tourner chacun plusieurs jeux (des mods d'Half life). Pour chaque jeu, un fichier est créer pour chaque joueur contenant quelques informations sur lui (stats de jeux, etc). Ce fichier est mis à jour au cours du temps.
Actuellement, les informations sont donc séparé entre chaque jeu, les informations d'un joueur sur le jeu1 ne sera pas les mêmes sur le jeu2.
Ce que j'aimerais faire, c'est mettre en communs ces fichiers. C'est à dire que dès que le fichier du joueur x est modifié sur un jeu, cette modification est répercutée sur tous les autres jeux.
Le jeux ne peux pas le faire lui même, il faudrait donc un programme qui tourne en fond (ou qui serait appelé toutes les 10 secondes par exemples), qui vérifierait si des mises à jours on été faites, et si oui, qui recopierait les fichiers sur tous les autres jeux.
Ma première question est, est-ce qu'un fichier bash appelé toutes les x secondes fera très bien l'affaire? J'imagine que oui. (sinon je pensais à un programme C qui se chargerait de faire les transferts)
J'ai donc regardé sur la partie "Transférer des fichiers" d'un tutoriel Linux. Et j'y vois plusieurs solutions:
- La commande scp
- La connexion ssh
- La connexion ftp
Est-ce qu'une de ces commandes est plus efficace que les autres pour ce que je veux faire?
Les serveurs enverront pleins de petits fichiers (chaque jeu n'accueillant qu'une vingtaine de joueurs il y aurait donc un maximum d'une vingtaine de fichiers à envoyer à chaque fois), faudrait-il donc garder une connexion ssh ouverte et envoyer un fichier dès qu'il est mis à jour?
Est-ce que la commande scp réouvre une connexion ssh a chaque envoie? Si oui j'ai peur que ce soit plus lent non?
Et enfin, on trouve à la fin du tutoriel, la commande rsync, qui synchronise les fichiers d'un emplacement 1 avec un emplacement 2. Ne serait-ce pas finalement la solution la plus adaptée? Seulement, la "base de donnée" regroupant les fichiers de tous les joueurs passé sur le serveur (donc un nombre assez conséquent), la recherche des fichiers modifié ne serait pas trop lente?
Si je choisis l'option scp/ssh/ftp, pour éviter le temps de recherche des modifications, je pensais faire, lors de la mise à jour d'un fichier joueur, une copie de celui ci dans un dossier "a envoyé". Le fichier batch regarderait dans ce dossier si il y a des fichiers à envoyé, si oui ils les enverraient a l'aide d'une des trois méthodes, et supprimerait le contenu du dossier.
Voila, je serais ravi d'avoir votre avis la dessus.
Merci.
Partager