+% Change le nom du noeud d'un backup.
+% provient d'ici : http://www.erlang.org/doc/apps/mnesia/Mnesia_chap7.html#6.9
+% From : l'ancien nom
+% To : le nouveau nom
+% Source : le nom du fichier de backup
+% Target : le nom du fichier du nouveau backup
+change_node_name(From, To, Source, Target) ->
+ Switch =
+ fun(Node) when Node == From -> To;
+ (Node) when Node == To -> throw({error, already_exists});
+ (Node) -> Node
+ end,
+ Convert =
+ fun({schema, db_nodes, Nodes}, Acc) ->
+ {[{schema, db_nodes, lists:map(Switch,Nodes)}], Acc};
+ ({schema, version, Version}, Acc) ->
+ {[{schema, version, Version}], Acc};
+ ({schema, cookie, Cookie}, Acc) ->
+ {[{schema, cookie, Cookie}], Acc};
+ ({schema, Tab, CreateList}, Acc) ->
+ Keys = [ram_copies, disc_copies, disc_only_copies],
+ OptSwitch =
+ fun({Key, Val}) ->
+ case lists:member(Key, Keys) of
+ true -> {Key, lists:map(Switch, Val)};
+ false-> {Key, Val}
+ end
+ end,
+ {[{schema, Tab, lists:map(OptSwitch, CreateList)}], Acc};
+ (Other, Acc) ->
+ {[Other], Acc}
+ end,
+ mnesia:traverse_backup(Source, Target, Convert, switched).
+
+
+% Obsolète
+%~ backup_text(File) ->
+ %~ mnesia:dump_to_textfile(File).
+%~ restore_text(File) ->
+ %~ mnesia:stop(),
+ %~ mnesia:delete_schema([node()]),
+ %~ mnesia:start(),
+ %~ create_tables(),
+ %~ case mnesia:load_textfile(File) of
+ %~ {atomic, ok} ->
+ %~ update(),
+ %~ creer_indexes();
+ %~ Erreur ->
+ %~ Erreur
+ %~ end.