Module filesync
Le module filesync
permet de synchroniser des fichiers et répertoires entre l’agent Alemca et l’API de fichiers distante.
Pour l’importer en Lua, utilisez :
Configuration
Ce module est automatiquement chargé lors du démarrage de l’agent et n’exige pas d’inclusion explicite dans le fichier de configuration, si ce n’est pour préciser ses propres paramètres. Voici les clés YAML reconnues :
modules:
filesync:
- name: filesync # Nom logique de l’instance (ex. "sync1")
api_base: # URL de base de l’API (défaut : https://api.alemca.io/data/files)
"https://api.alemca.io/data/files"
base_paths: # Liste de répertoires locaux à synchroniser
- "/etc/alemca/configs"
- "/etc/alemca/scripts"
blacklist: # (Optionnel) Patterns à exclure
- "*.tmp"
- "cache/"
whitelist: # (Optionnel) Patterns à inclure
- "*.lua"
timeout_ms: # (Optionnel) Timeout HTTP en millisecondes (défaut : 30000)
45000
name
(string, requis) : Nom de l’instance.ident
(string) : Identifiant utilisé dans l’en-tête HTTPident
. Si non renseigné, hérité deglobal.ident
.token
(string) : Jeton utilisé dans l’en-tête HTTPtoken
. Si non renseigné, hérité deglobal.token
.api_base
(string) : URL de l’API de fichiers (défaut :https://api.alemca.io/data/files
).-
base_paths
(table[string]) : Répertoires locaux racines à synchroniser. Défauts : -
/etc/alemca/configs
/etc/alemca/scripts
/etc/alemca/commands
/etc/alemca/scripts_defaults
Sous Windows (\
), utilise~/alemca/...
.blacklist
(table[string]) : Patterns de fichiers à exclure du push.whitelist
(table[string]) : Patterns de fichiers à inclure (prioritaire sur la blacklist).timeout_ms
(integer) : Timeout du client HTTP en millisecondes (défaut :30000
).
Fonctions Lua
filesync.pull([remote], [localRel])
Télécharge du(s) répertoire(s) distant(s) vers le système de fichiers local.
-
Paramètres :
-
remote
(string, optionnel) : Chemin distant encodé (ex."edge_rootfs/etc/alemca/configs/"
). Si vide, parcourt chaquebase_paths
avec son remote par défaut. -
localRel
(string, optionnel) : Chemin relatif local au sein debase_paths
. Si vide, écrit à la racine de chaquebase_paths
. -
Retour :
-
true, nil
en cas de succès. nil, "<message d’erreur>"
en cas d’échec.
local filesync = require("filesync")
-- 1) Pull de tous les dossiers définis
local ok, err = filesync.pull()
assert(ok, err)
-- 2) Pull d’un sous-dossier spécifique
local ok2, err2 = filesync.pull("edge_rootfs/etc/alemca/configs/", "")
assert(ok2, err2)
-- 3) Pull d’un chemin local relatif
local ok3, err3 = filesync.pull("edge_rootfs/etc/alemca/scripts/", "scripts")
assert(ok3, err3)
filesync.push([local], [remote])
Téléverse du(s) fichier(s) local(aux) vers l’API distante.
-
Paramètres :
-
local
(string, optionnel) : Chemin local à téléverser. Si vide, parcourt tous lesbase_paths
. -
remote
(string, optionnel) : Chemin distant cible. Si vide, construit automatiquement viamakeRemoteRoot(local)
ou par défaut sur chaquebase_paths
. -
Retour :
-
true, nil
en cas de succès. nil, "<message d’erreur>"
en cas d’échec.
local filesync = require("filesync")
-- 1) Push complet de tous les dossiers
local ok, err = filesync.push()
assert(ok, err)
-- 2) Push d’un dossier local donné
local ok2, err2 = filesync.push("scripts", "")
assert(ok2, err2)
-- 3) Push vers un chemin distant explicite
local ok3, err3 = filesync.push("commands", "edge_rootfs/commands/")
assert(ok3, err3)
Champs Lua associés
filesync.name
: Nom de l’instance (identique au champname
de la config).filesync.type
: Type du module ("filesync"
).