Dateisyncronisation

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Cell.

    Dateisyncronisation

    Hallo zusammen.

    Ich habe vor demnächt ein Programm zu schreiben, das auf mehreren Rechnern in einem Netzwerk laufen soll. Das Programm an sich soll man nur durch eine Authentifizierung verwenden können. Diese Authentifizierung erfolgt mittels USB Stick. Soweit ist das alles kein Problem.

    Nun zu meinem Problem:

    Ich habe für die Authentifizierung eine verschlüsselte Datei erstellt, die das Programm nutzt um die USB Sticks zu erkennen und den entsprechenden Benutzer so anzumelden. Wenn ich jetzt einen Benutzer sperren oder einen neuen Benutzer anlegen will oder sonst eine Veränderung an Zugriffsrechten verändern will, muss ich das logischerweise an allen Rechnern tun.

    Diesen Vorgang würde ich gerne Automatisieren. Soweit ist das kein Problem. Das Problem ist, dass ich keinen (Serverrechner) habe von dem aus sich alle anderen die Daten holen könnten. Alle Rechner können auch einmal aus sein.

    Wie setzte ich nun eine vernünftige Synkronisation um, wenn nie klar ist welcher Rechner die neue Datei hat, und welche rechner sie noch brauchen?

    Ich hoffe ihr habt eine Lösung dafür
    mfg
    Cell
    Ich würde erst mal per ping checken welche Computer gerade da sind.
    Danach würde ich checken welche Daten ich habe, und dann würde ich es so machen :
    Client1 : Hast du schon im Verzeichnis : ... die Datei ... ?
    Client2 : Ja/Nein
    Client1 : OK falls ja dann schick mir doch bitte die Datei falls nicht dann schick ich sie dir.

    Ich würde aber sagen das dieses System nur bei 3-10 Ordnern anwendbar ist da es sonst zu langsam ist.

    MFG BlackNetworkBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Grundsätzlich ist die Idee gut. Aber ich sehe da mehrere Probleme.

    1.) Der Dateiname ist immer der gleiche daher müsste erstmal eine möglichkeit geschaffen werden um zu sehen, ob die Datei jetzt wirklich neue Informationen enthällt oder nicht.

    2.) Solange nur ein einziger Rechner Synkronisiert ist das alles gut und schön aber ich habe 300 Rechner im Netzwerk. Wenn die alle anfangen mit synkronisieren kommt es dann evtl schnell mal zu Problemen mit lese / schreibzugriffen besonders wenn mehrere Rechner versuchen einen zu Synkronisieren.

    Edit:

    wäre es sinnvoller die komplette Datei (die ist ja nicht grade groß) über das netzwerk zu versenden oder die Daten per TCP zu übergeben?
    Warum machst du es nicht einfach mit hashes z.b(MD5)?
    und überprüst ob die gleich sind :)
    Bei 300 Rechner würde ich sagen ist ein Server nötig da der Traffic sonst zu heftig wäre :)
    Also würde der Ablauf dann so ausehen :

    Client1 Connectet sich zum Mainserver
    Client1 : Gib mir all deine md5-Hashes
    Server : Klar doch Hier :
    Listmit hashes
    Client1 : Ich habe diesen Hash nicht : ... DEIN HASH
    Server : Das ist aber schade hier ist die Datei : ...DEINE DATEI


    MFG BlackNetworkBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „BlackNetworkBit“ ()

    Das ist alles gut und schön aber dennoch habe ich keinen Mainserver und ich bekomme leider auch keinen so sehr ich mich auch dafür einsetze. Eventuell wird man da mal wach wenn dann entsprechend der Traffic ansteigt ich weis es nicht.

    Also die Lösung mit dem Mainserver wird nichts ich brauche auf jeden Fall eine Client zu Client Lösung
    Der Server kann doch überall laufen sogar auf einen Client.
    Hauptsache ist das die synkronisation geordnet abläuft und dies geht eben nur mit einem Server der weiß was die Clients machen :)

    aber ich würde sagen das du einen Server bastelst den du dann auf dem client System aufsetzt.

    MFG BlacknetworḱBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Ist ist jetzt eben die Frage wie viele Dateien synchronisiert werden sollen.
    bei 1-3 Dateien kann man noch sagen das es vielleicht ohne gehen würde aber mit mehr als 1-3 Dateien a 300 Rechnern ist einfach zu viel der Traffic würde euch die Leitung verstopfen.

    Daher würde ich sagen braucht ihr auf jeden Fall eine Serveranwendung egal wie man es jetzt dreht und wendet.

    MFG BlackNetworkBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    Wenn du keinen Server hast und auch nicht sicherstellen kannst, dass ein Client permanent verfügbar ist, bleibt dir nichts anderes übrig, als alle (oder zumindest viele) Clients zugleich als Server auszustatten.
    Beim Starten schickt der Rechner einen Broadcast an alle Clients und fragt nach deren Liste.
    Sofern es neuere Dateien gibt als bei dir, lädst du die neueste von dem entsprechenden Client.

    Wenn du mit Syncen fertig bist, stellst du dich selbst als Server zur Verfügung.

    Rein programmiertechnisch könnte mich die Herausforderung reizen.
    Allerdings würde ich für solche Zwecke eines der vielen Sync-Tools einsetzen.
    Eines davon deckt garantiert auch deine Anforderungen ab.

    Anderer Ansatz: Du synchronisierst gegen die Cloud.
    Kostenlose und günstige Cloud-Server gibt es en masse.
    DropBox, SkyDrive, GoogleDrive, SugarSync...
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    Wenn du keinen Server hast und auch nicht sicherstellen kannst, dass ein Client permanent verfügbar ist, bleibt dir nichts anderes übrig, als alle (oder zumindest viele) Clients zugleich als Server auszustatten.

    Scheint als hättest du Erfahrung mit modernen Bot-Netzen. Hat zwar einen schlechten Ruf aber genau diese Technologie scheint hier gefragt zu sein 8-)

    emil.quast schrieb:

    Scheint als hättest du Erfahrung mit modernen Bot-Netzen.
    Nicht wirklich.

    Im Unterschied zu diesen würde ich bei der hier angedachten Methode nicht auf Infektion, sondern auf Installation setzen.
    Und vertraulichen Zugang (Friend-To-Friend).
    Was danach kommunikationstechnisch abläuft, kann durchaus den Methoden eines P2P-BotNet ähneln.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ist ist jetzt eben die Frage wie viele Dateien synchronisiert werden sollen.
    bei 1-3 Dateien kann man noch sagen das es vielleicht ohne gehen würde aber mit mehr als 1-3 Dateien a 300 Rechnern ist einfach zu viel der Traffic würde euch die Leitung verstopfen.


    Das würde ich dann nicht als Problem ansehen da die benötigte Datei (es ist nur eine) nur 2kb groß ist. Das sollte die Leitung hoffentlich nicht verstopfen. Die Datei kann zwar wachsen (wenn neue Benutzer dazu kommen) aber ich denke über 50 kb werden wir das nie im leben raus kommen.

    Wenn du keinen Server hast und auch nicht sicherstellen kannst, dass ein Client permanent verfügbar ist, bleibt dir nichts anderes übrig, als alle (oder zumindest viele) Clients zugleich als Server auszustatten.
    Beim Starten schickt der Rechner einen Broadcast an alle Clients und fragt nach deren Liste.
    Sofern es neuere Dateien gibt als bei dir, lädst du die neueste von dem entsprechenden Client.

    Wenn du mit Syncen fertig bist, stellst du dich selbst als Server zur Verfügung.


    Diese Methode könnte mir gefallen. Das ist eigentlich genau was ich suche..


    Rein programmiertechnisch könnte mich die Herausforderung reizen.
    Allerdings würde ich für solche Zwecke eines der vielen Sync-Tools einsetzen.
    Eines davon deckt garantiert auch deine Anforderungen ab.


    mag sein aber da stelle ich mich lieber der Herausforderung das selbst zu programmieren. Ich finde es immer etwas unschön wenn Programm 1 Programm 2 startet und hofft das dieses seine Arbeit auch ordentlich macht. Nein da stelle ich lieber sicher, dass genau das passiert was ich will das passiert^^


    Anderer Ansatz: Du synchronisierst gegen die Cloud.
    Kostenlose und günstige Cloud-Server gibt es en masse.
    DropBox, SkyDrive, GoogleDrive, SugarSync...


    Das ist keine Option, da die Rechner alle samt ausschließlich im Intranet hängen und keinen Zugangspunkt nach "draußen" haben und auch nicht haben sollen.
    Da wollen wir jetzt mal nicht den Teufel an die wand malen :)
    Vieleicht ist der Intranet betreiber einfach geizig mit seinem Speicher :D :D

    MFG BlackNetworkBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    nutze doch einen gratis server bei kilu oder anderen hostern wo du das dann mit dateien regelst also zB. eine Datei die 'hashes' heißt, hier werden die hash-codes reingeschrieben also zeile für zeile und dann eine datei 'clients' in dennen du dann die nummern bzw. die clients auflistest

    LG felipe12305

    felipe12305 schrieb:

    nutze doch einen gratis server bei kilu oder anderen hostern wo du das dann mit dateien regelst also zB. eine Datei die 'hashes' heißt, hier werden die hash-codes reingeschrieben also zeile für zeile und dann eine datei 'clients' in dennen du dann die nummern bzw. die clients auflistest

    LG felipe12305


    Er hat doch schon geschrieben das es im Intranet stattfindet also NIX Internet :)

    MFG BlackNetworkBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise