Ein Datentransfer mit mehreren Zielen (Windows)
Nabend zusammen,
es gibt ja viele Möglichkeiten Daten von A nach B zu schaufeln. Aber gibt es die Möglichkeit von A nach B und C gleichzeitig zu kopieren, so das A nur einmal gelesen wird?
Quasi die Daten in A werden einmal eingelesen aber an zwei Orte gleichzeitig geschrieben?
Hier ein Beispiel:
Sagen wir man möchte von einer HDD (Quelle) ein großes Datenpaket auf 2 externe Festplatten (Ziel 1 und 2) kopieren. Die Festplatten schaffen jeweils ~130 MB/sec. Die Quelle limitiert also, weil sie prinzipiell 2x die Daten lesen müsste. Egal ob hierbei der Kopiervorgang sequenziell oder parallel abläuft.
Sequenziell: 1x 130 MB/sec, dann 1x 130 MB/sec
Parallel : 1x 65 MB/sec + 1x 65 MB/sec
Die benötigte Zeit ist bei beiden fast identisch. Ich meine nun aber nun, dass die Quelle mit 130 MB/sec gelesen wird und gleichzeitig auf Ziel1 UND Ziel2 mit jeweils 130 MB/sec geschrieben wird. Also simultan 😉.
Edit: fürs bessere Verständnis angepasst
es gibt ja viele Möglichkeiten Daten von A nach B zu schaufeln. Aber gibt es die Möglichkeit von A nach B und C gleichzeitig zu kopieren, so das A nur einmal gelesen wird?
Quasi die Daten in A werden einmal eingelesen aber an zwei Orte gleichzeitig geschrieben?
Hier ein Beispiel:
Sagen wir man möchte von einer HDD (Quelle) ein großes Datenpaket auf 2 externe Festplatten (Ziel 1 und 2) kopieren. Die Festplatten schaffen jeweils ~130 MB/sec. Die Quelle limitiert also, weil sie prinzipiell 2x die Daten lesen müsste. Egal ob hierbei der Kopiervorgang sequenziell oder parallel abläuft.
Sequenziell: 1x 130 MB/sec, dann 1x 130 MB/sec
Parallel : 1x 65 MB/sec + 1x 65 MB/sec
Die benötigte Zeit ist bei beiden fast identisch. Ich meine nun aber nun, dass die Quelle mit 130 MB/sec gelesen wird und gleichzeitig auf Ziel1 UND Ziel2 mit jeweils 130 MB/sec geschrieben wird. Also simultan 😉.
Edit: fürs bessere Verständnis angepasst
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 467994
Url: https://administrator.de/forum/ein-datentransfer-mit-mehreren-zielen-windows-467994.html
Ausgedruckt am: 03.01.2025 um 02:01 Uhr
18 Kommentare
Neuester Kommentar
auch daten entstehen nicht aus dem nichts, wie gesagt, der vergleich hinkt nicht so sehr, wie du denkst.
Mit etwas Aufwand (siehe oben) kann ich auch aus 100l Milch 200l "milch" machen, klar, qualität leidet, da hinkt es dann. Mit einem Zwischenserver brauch ich Energie und Technik um selbes zu schaffen - aber dann kannst du den auch gleich als Publisher nehmen.
Gut, es gibt die Möglichkeit von Broadcasts (ich schreie heraus und jeder nimmt es auf 1x schreien, nx empfangen) aber ich gehe hier nicht von einem Broadcastnetz aus.
Mit etwas Aufwand (siehe oben) kann ich auch aus 100l Milch 200l "milch" machen, klar, qualität leidet, da hinkt es dann. Mit einem Zwischenserver brauch ich Energie und Technik um selbes zu schaffen - aber dann kannst du den auch gleich als Publisher nehmen.
Gut, es gibt die Möglichkeit von Broadcasts (ich schreie heraus und jeder nimmt es auf 1x schreien, nx empfangen) aber ich gehe hier nicht von einem Broadcastnetz aus.
Hi
Du meinst also etwas in Richtung Multicast File Copy.
Weis nicht ob dir das hier hilft:
http://nuxref.com/2014/10/01/mass-file-distribution-using-multicasting/
Mit freundlichen Grüßen Nemesis
Du meinst also etwas in Richtung Multicast File Copy.
Weis nicht ob dir das hier hilft:
http://nuxref.com/2014/10/01/mass-file-distribution-using-multicasting/
Mit freundlichen Grüßen Nemesis
Moin,
also rein theoretisch sollte das ohne Zwischenlösung lösbar sein:
Mit ausreichend RAM und einen passenden Programm sollte das klappen. Ich denke hier ans Programmieren:
Wenn ich "dusselige" Textdateien einlese, liegen die Daten ja auch erstmal im RAM des Systems. Und von dort kann ich ja dann schnell nacheinander die Informationen waonders abspeichern, ohne die Daten (die Variable/ das Array) zu leeren.
Was du daher mal versuchen könntest:
Schneller wird es vermutlich nicht gehen; setzt aber natürlich voraus, dass du ausreichend RAM hast. Wenn dein File 1TB groß ist und du nur 4 GB RAM hast, wirds eng
Ob das in Summe tatsächlich einen Geschwindigkeitsvorteil bringt oder irgendweo doch hingt: mag sein. Habe mich damit auch noch nie befassen müssen.
Gruß
em-pie
also rein theoretisch sollte das ohne Zwischenlösung lösbar sein:
Mit ausreichend RAM und einen passenden Programm sollte das klappen. Ich denke hier ans Programmieren:
Wenn ich "dusselige" Textdateien einlese, liegen die Daten ja auch erstmal im RAM des Systems. Und von dort kann ich ja dann schnell nacheinander die Informationen waonders abspeichern, ohne die Daten (die Variable/ das Array) zu leeren.
Was du daher mal versuchen könntest:
- laden/ erstellen einer RAM-Disk:
- https://www.maketecheasier.com/setup-ram-disk-windows/
- https://en.wikipedia.org/wiki/List_of_RAM_drive_software
- Daten über das Netzwerk auf die Disk kopieren
- von der RAM-Disk auf die ext. HDDs, dann mit zwei parallel sich startenden Jobs (um die Performance der Quelle nutzen zu können)
Schneller wird es vermutlich nicht gehen; setzt aber natürlich voraus, dass du ausreichend RAM hast. Wenn dein File 1TB groß ist und du nur 4 GB RAM hast, wirds eng
Ob das in Summe tatsächlich einen Geschwindigkeitsvorteil bringt oder irgendweo doch hingt: mag sein. Habe mich damit auch noch nie befassen müssen.
Gruß
em-pie
Nein, ich glaube, das tun wir nicht so sehr, wie du glaubst.
Denn jeder Duplizierungsvorgang braucht Leistung. Das kann das Lan, die Platte, die CPU oder auch der Chipsatz sein, Fakt ist, irgendwo laufen die Daten (i.d.R) als singulärer Stream (1S -> 1T) durch, sprich jedes Ziel hat seine eigene Source und damit seine eigene Transaktion.
Ferner stimmt es uach nicht, dass eine Kopie von einer SSD auf zwei (annahme) HDD ohne Limitierung ginge, es würde nur (ggf!) die Limitierung nicht ausreizen (kann aber, siehe Chipset, Ram, Software...).
Aber erklär mal praktisch, was du haben willst.
Am ehesten sehe ich da noch einen Multicast Transport, aber auch hier ist wieder die Frage des Limitierenden Netzwerks (Weshalb MC Netzwerke nicht zu groß sein sollten - hier schliesst sich der Kreis).
Viele Grüße
Denn jeder Duplizierungsvorgang braucht Leistung. Das kann das Lan, die Platte, die CPU oder auch der Chipsatz sein, Fakt ist, irgendwo laufen die Daten (i.d.R) als singulärer Stream (1S -> 1T) durch, sprich jedes Ziel hat seine eigene Source und damit seine eigene Transaktion.
Ferner stimmt es uach nicht, dass eine Kopie von einer SSD auf zwei (annahme) HDD ohne Limitierung ginge, es würde nur (ggf!) die Limitierung nicht ausreizen (kann aber, siehe Chipset, Ram, Software...).
Aber erklär mal praktisch, was du haben willst.
Am ehesten sehe ich da noch einen Multicast Transport, aber auch hier ist wieder die Frage des Limitierenden Netzwerks (Weshalb MC Netzwerke nicht zu groß sein sollten - hier schliesst sich der Kreis).
Viele Grüße
Hier wie da Limitiert ihn aber die physik.
Eine Multicastlösung ist nicht so einfach, wie man sich das denkt, ich hatte mal ein "Schnapsidee" Projekt mit einer Streaminglösung durch zu planen und daher weiss ich genau, auf welche Physiknobelpreisideen manche Leute meinen zu kommen, wenn es darum geht Bandbreite einzusparen (und dabei ist sekundär, ob das nun Bus, Lan, WAN oder sonstwas ist, Bandbreite bleibt Bandbreite).
Viele Grüße,
Christian
certifiedit.net
Eine Multicastlösung ist nicht so einfach, wie man sich das denkt, ich hatte mal ein "Schnapsidee" Projekt mit einer Streaminglösung durch zu planen und daher weiss ich genau, auf welche Physiknobelpreisideen manche Leute meinen zu kommen, wenn es darum geht Bandbreite einzusparen (und dabei ist sekundär, ob das nun Bus, Lan, WAN oder sonstwas ist, Bandbreite bleibt Bandbreite).
Viele Grüße,
Christian
certifiedit.net
Nunja, die einzelnen Schreibvorgänge von Ram auf ZielN+m sind wiederrum autarke Vorgänge, daher "warten" diese nicht auf die Schreibvorgänge von ZielN-1 und ZielN+1, das muss also synchronisiert sein (solange die Geschwindigkeit v nicht bereits physik. synchronisiert wird).
Ferner musst du eben auch aufpassen, dass nicht ggf. der Speicher "entladen" wird, bevor Summe(ZielN+m) mit SchreibvorgangX durch sind. Und Speicherhandling ist oftmals das größte Problem.
Natürlich stellt sich hierbei auch die Frage nach Ertrag für Aufwand - was willst du also praktisch erreichen und in welchem Umfang?
Ferner musst du eben auch aufpassen, dass nicht ggf. der Speicher "entladen" wird, bevor Summe(ZielN+m) mit SchreibvorgangX durch sind. Und Speicherhandling ist oftmals das größte Problem.
Natürlich stellt sich hierbei auch die Frage nach Ertrag für Aufwand - was willst du also praktisch erreichen und in welchem Umfang?
Moin
tee macht genau das was Du willst:
Kopiert die Eingabedatei in die beiden Ausgabedateien. Ob das schneller geht als zwei einzelne Kopierbefehle hängt stark von der Implementierung und den Datenpfaden im System ab. Jedenfalls hat man damit die Leseoperationen im Vergleich zum doppelten Kopieren halbiert.
Die Syntax in der Powershell weicht von der Standardversion aus dem Unixumfeld ab.
lks
tee macht genau das was Du willst:
tee <eingabedatei ausgabedatei1 >ausgabedatei2
Kopiert die Eingabedatei in die beiden Ausgabedateien. Ob das schneller geht als zwei einzelne Kopierbefehle hängt stark von der Implementierung und den Datenpfaden im System ab. Jedenfalls hat man damit die Leseoperationen im Vergleich zum doppelten Kopieren halbiert.
Die Syntax in der Powershell weicht von der Standardversion aus dem Unixumfeld ab.
lks