{"id":37019,"date":"2019-10-31T22:15:20","date_gmt":"2019-10-31T19:15:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sistema-udalennogo-fajlovogo-dostupa-cage\/"},"modified":"2019-10-31T22:15:20","modified_gmt":"2019-10-31T19:15:20","slug":"sistema-udalennogo-fajlovogo-dostupa-cage","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","title":{"rendered":"Syst\u00e8me d'acc\u00e8s distant aux fichiers Cage","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Objectif du syst\u00e8me<\/h3>\n<p><\/p>\n<p>Support d'acc\u00e8s \u00e0 distance aux fichiers sur les ordinateurs du r\u00e9seau. Le syst\u00e8me prend en charge virtuellement toutes les op\u00e9rations de fichiers essentielles (cr\u00e9ation, suppression, lecture, \u00e9criture, etc.) via des \u00e9changes de transactions (messages) par le protocole TCP.<\/p>\n<p><\/p>\n<h3>Domaines d'application<\/h3>\n<p><\/p>\n<p>Les fonctionnalit\u00e9s du syst\u00e8me sont efficaces dans les cas suivants :<\/p>\n<ul>\n<li> dans les applications natives pour appareils mobiles et embarqu\u00e9s (smartphones, syst\u00e8mes de contr\u00f4le embarqu\u00e9s, etc.) n\u00e9cessitant un acc\u00e8s rapide aux fichiers sur des serveurs distants en cas de interruptions temporaires dans la connexion (d\u00e9connexion) ;<\/li>\n<li> dans des SGBD fortement charg\u00e9s, si le traitement des requ\u00eates se fait sur un serveur, tandis que le stockage des donn\u00e9es se fait sur un autre ;<\/li>\n<li> dans des r\u00e9seaux d'entreprise distribu\u00e9s de collecte et de traitement d'informations, n\u00e9cessitant une vitesse d'\u00e9change de donn\u00e9es \u00e9lev\u00e9e, de la redondance et de la fiabilit\u00e9 ;<\/li>\n<li> dans des syst\u00e8mes complexes avec une architecture microservices, o\u00f9 les latences dans l'\u00e9change d'informations entre les modules sont critiques.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <\/p>\n<h3>Structure<\/h3>\n<p><\/p>\n<p>Le syst\u00e8me Cage (une version b\u00eata est disponible en Python 3.7 sur Windows) comprend deux parties principales : <\/p>\n<ol>\n<li> <b>Cageserver<\/b> \u2014 un programme de serveur de fichiers (ensemble de fonctions) qui s'ex\u00e9cute sur les ordinateurs du r\u00e9seau auxquels un acc\u00e8s distant aux fichiers est n\u00e9cessaire ;<\/li>\n<li> classe <b>Cage<\/b> avec une biblioth\u00e8que de m\u00e9thodes pour le logiciel client, facilitant le codage de l'interaction avec les serveurs.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Utilisation du syst\u00e8me c\u00f4t\u00e9 client<\/h3>\n<p><\/p>\n<p>Les m\u00e9thodes de la classe Cage remplacent les op\u00e9rations \u00ab routini\u00e8res \u00bb classiques du syst\u00e8me de fichiers : <i>cr\u00e9ation, ouverture, fermeture, suppression <\/i>de fichiers, ainsi que <i>la lecture\/\u00e9criture de donn\u00e9es en format binaire<\/i> (en pr\u00e9cisant la position et la taille des donn\u00e9es). Conceptuellement, ces m\u00e9thodes sont proches des fonctions de fichiers du langage C, o\u00f9 l'ouverture\/fermeture de fichiers se fait \u00ab sur des canaux \u00bb d'entr\u00e9e\/sortie. <\/p>\n<p><\/p>\n<p>En d'autres termes, le programmeur travaille non pas avec les m\u00e9thodes des objets \u00ab fichiers \u00bb (classe <b>_io<\/b> en Python), mais avec les m\u00e9thodes de la classe Cage.<\/p>\n<p><\/p>\n<p>Lors de la cr\u00e9ation d'une instance de l'objet Cage, il \u00e9tablit un lien initial avec le serveur (ou plusieurs serveurs), passe l'authentification via l'ID client et re\u00e7oit confirmation avec le num\u00e9ro du port r\u00e9serv\u00e9 pour effectuer toutes les op\u00e9rations de fichiers. Lors de la suppression de l'objet Cage, il envoie une commande au serveur pour interrompre la connexion et fermer les fichiers. L'interruption de la connexion peut \u00e9galement \u00eatre initi\u00e9e par les serveurs eux-m\u00eames.<\/p>\n<p><\/p>\n<p>Le syst\u00e8me am\u00e9liore la vitesse de lecture\/\u00e9criture en se basant sur la mise en cache des fragments de fichiers fr\u00e9quemment utilis\u00e9s par les programmes clients dans la m\u00e9moire vive.<br \/>\nLe logiciel client peut utiliser un nombre quelconque d'objets Cage avec diff\u00e9rentes configurations (taille de la m\u00e9moire tampon, taille des blocs lors des \u00e9changes avec le serveur, etc.). <\/p>\n<p><\/p>\n<p>Un objet Cage peut \u00e9changer des donn\u00e9es avec plusieurs fichiers sur plusieurs serveurs. Les param\u00e8tres de connexion (adresse IP ou DNS du serveur, port principal pour l'authentification, chemin et nom du fichier) sont d\u00e9finis lors de la cr\u00e9ation de l'objet.<\/p>\n<p><\/p>\n<p>\u00c9tant donn\u00e9 que chaque objet Cage peut travailler simultan\u00e9ment avec plusieurs fichiers, un espace m\u00e9moire commun est utilis\u00e9 pour la mise en cache. La taille du cache \u2013 le nombre de pages et leur taille \u2013 est d\u00e9finie dynamiquement lors de la cr\u00e9ation de l'objet Cage. Par exemple, un cache de 1 Go correspond \u00e0 1000 pages de 1 Mo, ou 10 000 pages de 100 Ko, ou 1 million de pages de 1 Ko. Le choix de la taille et du nombre de pages est une t\u00e2che sp\u00e9cifique pour chaque cas d'application.<\/p>\n<p><\/p>\n<p>Il est possible d'utiliser plusieurs objets Cage simultan\u00e9ment pour d\u00e9finir diff\u00e9rentes configurations de m\u00e9moire tampon en fonction des caract\u00e9ristiques d'acc\u00e8s \u00e0 l'information dans diff\u00e9rents fichiers. Comme base, l'algorithme de mise en cache le plus simple est appliqu\u00e9 : une fois que le volume de m\u00e9moire sp\u00e9cifi\u00e9 est \u00e9puis\u00e9, les nouvelles pages remplacent les anciennes selon un principe de sortie avec un nombre minimal d'acc\u00e8s. La mise en cache est particuli\u00e8rement efficace en cas d'acc\u00e8s conjoint in\u00e9gal (au sens statistique), d'une part, \u00e0 diff\u00e9rents fichiers, et, d'autre part, \u00e0 des fragments de chaque fichier. <\/p>\n<p><\/p>\n<p>La classe Cage prend en charge l'entr\u00e9e\/sortie non seulement par adresses de donn\u00e9es (en pr\u00e9cisant la position et la longueur du tableau, \u00ab rempla\u00e7ant \u00bb les op\u00e9rations du syst\u00e8me de fichiers), mais aussi \u00e0 un niveau plus bas, \u00ab physique \u00bb \u2014 par num\u00e9ros de pages dans la m\u00e9moire tampon. <\/p>\n<p><\/p>\n<p>Une fonction originale est prise en charge pour les objets Cage <i>\u00ab d'hibernation \u00bb<\/i> (\u00absommeiller\u00bb) \u2013 elles peuvent \u00eatre \u00abr\u00e9duites\u00bb (par exemple, en cas de rupture de la connexion avec les serveurs, ou lors de l'arr\u00eat de l'application, etc.) dans un fichier de vidage local c\u00f4t\u00e9 client et rapidement restaur\u00e9es \u00e0 partir de ce fichier (apr\u00e8s le r\u00e9tablissement de la connexion, lors du red\u00e9marrage de l'application). Cela permet une r\u00e9duction significative du trafic lors de la r\u00e9activation de l'application cliente apr\u00e8s un retrait temporaire \u00abhors ligne\u00bb, car les fragments de fichiers fr\u00e9quemment utilis\u00e9s seront d\u00e9j\u00e0 en cache.<\/p>\n<p><\/p>\n<p>Cage \u2014 c'est environ 3600 lignes de code.<\/p>\n<p><\/p>\n<h3>Principes de construction des serveurs<\/h3>\n<p><\/p>\n<p>Les fichiers serveurs de Cage peuvent \u00eatre lanc\u00e9s avec un nombre arbitraire de ports, dont un (\u00abprincipal\u00bb) est uniquement utilis\u00e9 pour l'authentification de tous les clients, les autres pour l'\u00e9change de donn\u00e9es. Le programme du serveur Cage n\u00e9cessite uniquement Python. Parall\u00e8lement, l'ordinateur avec le serveur de fichiers peut effectuer tout autre travail. <\/p>\n<p><\/p>\n<p>Le serveur d\u00e9marre initialement comme un ensemble de deux processus principaux :<\/p>\n<ol>\n<li><b>\u00abConnexions\u00bb<\/b> \u2013 processus pour \u00e9tablir et terminer la connexion avec les clients \u00e0 l'initiative du serveur ;<\/li>\n<li><b>\u00abOp\u00e9rations\u00bb<\/b> \u2013 processus pour ex\u00e9cuter les t\u00e2ches (op\u00e9rations) des clients relatives aux fichiers, ainsi que pour fermer les sessions de connexion sur commande des clients.<\/li>\n<\/ol>\n<p><\/p>\n<p>Les deux processus ne sont pas synchronis\u00e9s et organis\u00e9s comme des boucles infinies de r\u00e9ception et d'envoi de messages sur la base de files d'attente multiprocessus, d'objets proxy, de verrous et de sockets.<br \/>\nLe processus \u00abConnexions\u00bb attribue \u00e0 chaque client un port pour la transmission de donn\u00e9es. Le nombre de ports est d\u00e9fini lors du d\u00e9marrage du serveur. La correspondance entre les ports et les clients est stock\u00e9e dans une m\u00e9moire proxy partag\u00e9e entre les processus.<\/p>\n<p><\/p>\n<p>Le processus \u00abOp\u00e9rations\u00bb maintient une s\u00e9paration des ressources de fichiers, permettant ainsi \u00e0 plusieurs clients diff\u00e9rents de lire conjointement (<i>quasi-parall\u00e8le<\/i>, car l'acc\u00e8s est g\u00e9r\u00e9 par des verrous) des donn\u00e9es d'un m\u00eame fichier, si cela a \u00e9t\u00e9 autoris\u00e9 lors de son ouverture initiale par le \u00abpremier\u00bb client. \n<\/p>\n<p>Le traitement des commandes pour cr\u00e9er\/supprimer\/ouvrir\/fermer des fichiers sur <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/fr\/server\/dts-dronten\/\"   title=\"le serveur\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2497\">le serveur<\/a> est effectu\u00e9 dans le processus \u00abOp\u00e9rations\u00bb de mani\u00e8re strictement s\u00e9quentielle en utilisant le syst\u00e8me de fichiers du serveur OS.<\/p>\n<p><\/p>\n<p>Pour acc\u00e9l\u00e9rer la lecture\/\u00e9criture en g\u00e9n\u00e9ral, ces op\u00e9rations sont effectu\u00e9es dans des threads g\u00e9n\u00e9r\u00e9s par le processus \u00ab Op\u00e9rations \u00bb. Le nombre de threads est g\u00e9n\u00e9ralement \u00e9gal au nombre de fichiers ouverts. Les t\u00e2ches de lecture\/\u00e9criture des clients sont soumises \u00e0 une file d'attente commune et le premier thread disponible prend la t\u00e2che \u00e0 son sommet. Une logique sp\u00e9ciale permet d'exclure les op\u00e9rations de r\u00e9\u00e9criture des donn\u00e9es dans la m\u00e9moire vive du serveur.<\/p>\n<p><\/p>\n<p>Le processus \u00ab Op\u00e9rations \u00bb surveille l'activit\u00e9 des clients et interrompt leur service soit \u00e0 leurs commandes, soit en cas de d\u00e9passement des d\u00e9lais d'inactivit\u00e9.<\/p>\n<p><\/p>\n<p>Pour garantir la fiabilit\u00e9, Cageserver tient des journaux de toutes les transactions. Un journal g\u00e9n\u00e9ral contient des copies des messages des clients avec des t\u00e2ches de cr\u00e9ation\/ouverture\/renommage\/suppression de fichiers. Pour chaque fichier de travail, un journal s\u00e9par\u00e9 est cr\u00e9\u00e9, dans lequel sont enregistr\u00e9es des copies des messages avec des t\u00e2ches de lecture et d'\u00e9criture de donn\u00e9es dans ce fichier de travail, ainsi que des tableaux de donn\u00e9es \u00e9crites (nouvelles) et des tableaux de donn\u00e9es qui ont \u00e9t\u00e9 d\u00e9truites lors de la r\u00e9\u00e9criture (\u00e9criture de nouvelles donn\u00e9es \u00ab par-dessus \u00bb les anciennes). <\/p>\n<p><\/p>\n<p>Ces journaux permettent \u00e0 la fois de restaurer de nouveaux changements \u00e0 partir des sauvegardes et de \u00ab revenir \u00bb du contenu actuel \u00e0 un moment voulu dans le pass\u00e9. <\/p>\n<p><\/p>\n<p>Cageserver contient environ 3100 lignes de code.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Syst\u00e8me d&#039;acc\u00e8s distant aux fichiers Cage\" src=\"\/wp-content\/uploads\/2019\/08\/606d593347d73274b0c172dae34da0d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>D\u00e9marrage du programme serveur de fichiers Cageserver<\/h3>\n<p><\/p>\n<p>Lors du d\u00e9marrage, il faut d\u00e9finir :<br \/>\n \u2014 le port principal pour l'authentification ;<br \/>\n \u2014 le nombre de ports pour l'\u00e9change de transactions avec les clients autoris\u00e9s (\u00e0 partir de 1 et plus, la piscine de num\u00e9ros commence juste apr\u00e8s le num\u00e9ro du port principal).<\/p>\n<p><\/p>\n<h3>Utilisation de la classe Cage<\/h3>\n<p><\/p>\n<p><b>class<\/b> cage.<b>Cage<\/b>( <i>cage_name=\u00ab, pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file=\u00ab<\/i> )<\/p>\n<p><\/p>\n<p>Des objets sont cr\u00e9\u00e9s \u00e0 partir de cette classe, qui interagissent avec les serveurs de fichiers et contiennent de la m\u00e9moire tampon.<\/p>\n<p><\/p>\n<p><b><u>Param\u00e8tres<\/u><\/b><\/p>\n<p><\/p>\n<ul>\n<li> <b>cage_name<\/b>(<i>str<\/i>) \u2014 nom conditionnel de l'objet, utilis\u00e9 lors de l'identification des clients c\u00f4t\u00e9 serveur <\/li>\n<li> <b>pagesize<\/b>(<i>int<\/i>) \u2014 taille d'une page de m\u00e9moire tampon (en octets)<\/li>\n<li> <b>numpages<\/b>(<i>int<\/i>) \u2014 nombre de pages en m\u00e9moire tampon<\/li>\n<li> <b>maxstrlen<\/b>(<i>int<\/i>) \u2014 longueur maximale d'une cha\u00eene d'octets dans les op\u00e9rations d'\u00e9criture et de lecture<\/li>\n<li> <b>server_ip<\/b>(<i>dict<\/i>) \u2014 dictionnaire avec les adresses utilis\u00e9es <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/fr\/server\/\"   title=\"serveurs\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1347\">serveurs<\/a>, o\u00f9 la cl\u00e9 est le nom conditionnel du serveur (id du serveur dans l'application), et la valeur est une cha\u00eene avec l'adresse : \u00ab adresse_ip:port \u00bb ou \u00ab DNS:port \u00bb (la correspondance entre les noms et les adresses r\u00e9elles est temporaire, elle peut \u00eatre modifi\u00e9e)<\/li>\n<li> <b>wait<\/b>(<i>int<\/i>) \u2014 temps d'attente de r\u00e9ponse du serveur lors de la r\u00e9ception des ports (en sec.)<\/li>\n<li> <b>\u00e9veill\u00e9<\/b>(<i>boolean<\/i>) \u2014 indicateur de la m\u00e9thode de cr\u00e9ation de l'objet (<i>False<\/i> \u2014 si un nouvel objet est cr\u00e9\u00e9, <i>Vrai<\/i> \u2014 si l'objet est cr\u00e9\u00e9 \u00e0 partir d'un \u00ab objet pr\u00e9c\u00e9demment \u00ab suspendu \u00bb \u2014 par l'utilisation de l'op\u00e9ration \u00ab hibernation \u00bb, par d\u00e9faut False)<\/li>\n<li> <b>fichier_cache<\/b>(<i>str<\/i>) \u2014 nom du fichier pour l'hibernation<\/li>\n<\/ul>\n<p><\/p>\n<p><b><u>M\u00e9thodes<\/u><\/b><\/p>\n<p><\/p>\n<p>Cage.<b>creer_fichier<\/b>( <i>serveur, chemin<\/i> ) \u2013 cr\u00e9er un nouveau fichier<\/p>\n<p><\/p>\n<p>Cage.<b>renommer_fichier<\/b>( <i>serveur, chemin, nouveau_nom<\/i> ) \u2013 renommer le fichier<\/p>\n<p><\/p>\n<p>Cage.<b>supprimer_fichier<\/b>( <i>serveur, chemin<\/i>) \u2013 supprimer le fichier<\/p>\n<p><\/p>\n<p>Cage.<b>open<\/b>( <i>serveur, chemin, mod <\/i>) \u2013 ouvrir le fichier<\/p>\n<p><\/p>\n<p>Retourne <i>fchannel<\/i> num\u00e9ro de canal. Le param\u00e8tre <i>mod<\/i> \u2014 est le mode d'ouverture du fichier : \u00ab wm \u00bb \u2014 monopolistique (lecture\/\u00e9criture), \u00ab rs \u00bb \u2014 seulement lecture, et partag\u00e9 uniquement pour lecture par d'autres clients, \u00ab ws \u00bb \u2014 lecture\/\u00e9criture, et partag\u00e9 uniquement pour lecture par d'autres clients. <\/p>\n<p><\/p>\n<p>Cage.<b>close<\/b> (<i>fchannel<\/i>) \u2013 fermer le fichier<\/p>\n<p><\/p>\n<p>Cage.<b>write <\/b>(<i>fchannel, debut, donnees <\/i>) \u2013 \u00e9crire une cha\u00eene de bytes dans le fichier<\/p>\n<p><\/p>\n<p>Cage.<b>read <\/b>(<i>fchannel, debut, len_donnees<\/i> ) \u2013 lire une cha\u00eene de bytes depuis le fichier<\/p>\n<p><\/p>\n<p>Cage.<b>mettre_pages <\/b>( <i>fchannel<\/i> ) \u2013 \u00ab expulse \u00bb du tampon sur le serveur toutes les pages du canal sp\u00e9cifi\u00e9 qui ont \u00e9t\u00e9 modifi\u00e9es. Utilis\u00e9 \u00e0 des points de l'algorithme o\u00f9 il faut s'assurer que toutes les op\u00e9rations sur le canal sont physiquement enregistr\u00e9es dans le fichier sur le serveur.<\/p>\n<p><\/p>\n<p>Cage.<b>push_all<\/b> () \u2013 \u00ab expulse \u00bb du tampon sur le serveur toutes les pages de tous les canaux pour l'instance de la classe Cage qui ont \u00e9t\u00e9 modifi\u00e9es. Utilis\u00e9 lorsque l'on veut s'assurer que toutes les op\u00e9rations sur tous les canaux sont enregistr\u00e9es sur le serveur.<\/p>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463085\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0434\u0440.) \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u043c\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438) \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0422\u0421\u0420. \u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445: \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438 embedded \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b, \u0431\u043e\u0440\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f.), \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Cage | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:15:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:15:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Syst\u00e8me d'acc\u00e8s distant aux fichiers Cage | ProHoster","description":"Objectif du syst\u00e8me: prise en charge de l'acc\u00e8s \u00e0 distance aux fichiers sur les ordinateurs du r\u00e9seau.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Cage | ProHoster","og:description":"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:15:20+00:00","article:modified_time":"2019-10-31T19:15:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37019","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-09 21:52:49","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:34:26","updated":"2026-02-09 21:52:49","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/37019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=37019"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/37019\/revisions"}],"predecessor-version":[{"id":159779,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/37019\/revisions\/159779"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/27748"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=37019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=37019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=37019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}