INI-Dateien auf Samba-Laufwerk

(DE) System, Installation, Konfiguration, Hardware, Treiber, Netzwerk, Virtualisierung, etc.
(EN) System, Installation, Configuration, Hardware, Drivers, Network, Virtualisation, etc.
Antworten
Benutzeravatar
DonLucio
Beiträge: 958
Registriert: So 29. Dez 2013, 01:14
Wohnort: Hamburg
Kontaktdaten:

INI-Dateien auf Samba-Laufwerk

Beitrag von DonLucio »

Ich verwende ein Datensicherungsprogramm, das nach jedem Lauf einige Daten, u.a. Datum der letzten Sicherung, auf dem Sicherungsdatenträger abspeichert. Dieser ist in aller Regel ein USB-Laufwerk. Diese Meta-Daten werden in Form einer OS/2-INI-Datei gespeichert. Das klappte bisher anstandlos.

Nun habe ich als Datensicherungs-Medium ein Samba-Laufwerk eingerichtet und das macht Schwierigkeiten.

Die zu sichernden Daten werden zwar problemlos auf diesem Samba-Laufwerk gespeichert. Aber zum Schluß bricht das Programm ab: Das Speichern der Meta-Daten in der INI-Datei kriegt einen 'ERROR:' Leider kennen die SysINI-Funktionen keine aussagekräftigen Returncodes, es gibt nur <blank> für Keine-Fehler oder eben 'ERROR:', wenn irgendwas schiefging.

Ich habe mal mit einer eigenen Rexx-Routine versucht (SysINI()-Funktion): Tatsächlich läßt sch eine INI-Datei auf dem Samba-Share lesen, aber einen Wert hineinschreiben endet mit "ERROR:".

An mangelndem Schreibschutz kann es kaum liegen, denn folgender Workaround funktioniert:
(1) INI-Datei auf ein lokales Lauwerk kopieren
(2) Dort die Updates mit SysINI() vornehmen
(3) INI-Datei zurückkopieren auf das Samba-Share
(4) Vom Samba-Share gelesene INI-Werte sind korrekt (aktuell).

Es muß also in der SysINI-Funktion irgendein spezieller Schreibschutz implementiert sein, der nur bei Netzlaufwerken anspringt.

Weiß da jemand Näheres drüber? Wie kann man den umgehen?

Danke,
Lutz W.
Benutzeravatar
Frank Wochatz
Beiträge: 1112
Registriert: So 22. Dez 2013, 22:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von Frank Wochatz »

Das klingt ja garnicht gut. Wahrscheinlich würde ich in dem Fall doch eher auf ein anderes Format wechseln. Textbasierte Formate wie CSV oder JSON sollten da für kleine bis mittlere (und mit unseren heutigen RAM Größen und Prozessoren auch größere) Datenbanken super schnell funktionieren.

Ansonsten könntest du mal FASTINI probieren. Das verändert die Lese- und Schreibzugriffe auf Ini-Dateien (hat glaube ich irgendwie mit dem Öffnen und Caching zu tun, müsste man nochmal nachlesen, ist lange her). Du must dazu nur Fastini.dll von deinem Script laden, dein Rexx code muss nicht verändert werden.

http://www.edm2.com/index.php/FastINI

Das ist jetzt ein Schuß ins Blaue (die einzige mir bekannte Möglichkeit, an den Ini-Zugriffen etwas zu verändern).
Benutzeravatar
DonLucio
Beiträge: 958
Registriert: So 29. Dez 2013, 01:14
Wohnort: Hamburg
Kontaktdaten:

Beitrag von DonLucio »

Hallo Frank,
Frank Wochatz hat geschrieben: Fr 15. Mär 2024, 07:58 Ansonsten könntest du mal FASTINI probieren.
Danke für den Tip.
Ich hab's mal ausprobiert und ja: Es funktioniert auch auf Samba-Shares!

Der Trick scheint einfach: FastINI kopiert die INI-Dateien ins RAM, verarbeitet sie dort und kopiert sie am Programmende zurück an ihren Ort auf der Festplatte. Dieser Schluß ergibt sich aus dem Kommentar im example.cmd, wo darauf hingewiesen wird, dass bei einem abnormalen Programmende die INI-Updates futsch sind.

Dieses Verhalten muß man wollen und mögen, ich selbst bin da noch nicht ganz sicher. Immerhin: Man kan mit SIGNAL ON ... dagegen Vorkehrungen treffen. Ausserdem: Bei ausgetesteten Programmen sollte es keine Rolle mehr spielen, die stürzen nicht ab ....

Danke,
Lutz W.
Benutzeravatar
Frank Wochatz
Beiträge: 1112
Registriert: So 22. Dez 2013, 22:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von Frank Wochatz »

Hallo Lutz,

ich nutze das Ini Format mit Fastini für meine Datenbanken (Contact Addressmanager und Eacoounts Passwortmanager). Funktioniert soweit sehr gut schon seit >10 Jahre ohne Probleme.
Würde ich meine Programme heute nochmal schreiben, würde ich wie gesagt auf ein Textformat zurückgreifen, zB. CSV lässt sich unter Rexx sehr gut parsen (und bei Bedarf auch mal mit anderen Tools bearbeiten oder einsehen). Ich würde die Daten beim Programmsrtart auch komplett in den RAM ziehen und dort verarbeiten. Das sind bei normalen Datensätzen ev. ein paar Kilobyte. Eine Sicherung auf die Festplatte könnte nach jeder Änderung vornehmen,
Ich hatte auch mal mit dem Gedanken gespielt, mit einfachem Rexx eine Datenbankengine zu schreiben, mit einem entsprechendem Befehlssatz zum Lesen, Schreiben, Löschen, Ersetzen von Datenbankeinträgen. Aber ich schaffe irgendwie nur noch 10% von dem, was ich mir so vornehme... :lol: Zuviel anderer Kram im Kopf.

Gruß
Frank
Benutzeravatar
DonLucio
Beiträge: 958
Registriert: So 29. Dez 2013, 01:14
Wohnort: Hamburg
Kontaktdaten:

Beitrag von DonLucio »

Hallo Frank,
Frank Wochatz hat geschrieben: Sa 16. Mär 2024, 10:37 Würde ich meine Programme heute nochmal schreiben, würde ich auf ein Textformat zurückgreifen, zB. CSV
Kann man machen, ist Geschmacksache. Ich mag aber die INIs, weil sie ermöglicht mir ein Minimum an Strukturiertheit meiner Daten, wenn es sich nicht nur um einfache Listen-Strukturen handelt

Frank Wochatz hat geschrieben: Sa 16. Mär 2024, 10:37 Ich hatte auch mal mit dem Gedanken gespielt, mit einfachem Rexx eine Datenbankengine zu schreiben,
Könnte ich mir gut vorstellen. Mit Rexx ist ja viel mehr möglich als nur einfache Kommandozeilenskripte zu schreiben. Nicht umsonst heißt Rexx in der Windows-Welt auch "Regina", die Königin ;)

Gruß,
Lutz W.
Antworten