Hallo,
ich habe zwei große .txt Dateien (Datei1: 15 GB | Datei2: 5 GB).
Der dateiinhalt der zwei Dateien soll später in der Datei all.txt zusammengefügt werden.
Ich habe es auf meinem Server mehrmals mit cat versucht, allerdings stürzt dann immer mein Server ab.
Diese Commands hab ich ausprobiert:
cat datei1.txt datei2.txt > all.txt
cp datei1.txt all.txt; cat datei2.txt >> all.txt
...
Wie schaffe ich es beide Dateien zusammen zufügen ohne das mein Server abstüzt?
Zwei sehr große Dateien zusammenfügen
-
- Beiträge: 19
- Registriert: 29.07.2017 16:36:14
Re: Zwei sehr große Dateien zusammenfügen
cat ist genau für diesen Zweck gedacht, "concatenate". Wieso stürzt dein Rechner dabei ab?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Zwei sehr große Dateien zusammenfügen
mitEmanuelBennici hat geschrieben:05.08.2017 19:12:31Wie schaffe ich es beide Dateien zusammen zufügen ohne das mein Server abstüzt?
Code: Alles auswählen
cat datei1.txt datei2.txt > all.txt
Und wenn dein Server dabei abstürzt, solltest du mal seine Hardware prüfen.
Re: Zwei sehr große Dateien zusammenfügen
Operiert der Befehl auf einem lokalen Dateisystem? Welchem? Gibt es vielleicht 16 GB-Grenzen im Dateisystem oder bei NFS, Samba oder was sonst noch im Einsatz sein koennte? Aber selbst dann sollte ein System nicht abstuerzen.
Auch wenn es eigentlich nichts zur Sache tut (weil cat(1) hier funktionieren muss), warum willst du die Dateien zusammenfuegen ... zwei so riesige Textdateien? Das koennen doch eigentlich nur Logfiles oder sonstiger Programmoutput sein oder Messdaten. Die kann man meist auch gemeinsam auswerten wenn es zwei separate Dateien sind.
Auch wenn es eigentlich nichts zur Sache tut (weil cat(1) hier funktionieren muss), warum willst du die Dateien zusammenfuegen ... zwei so riesige Textdateien? Das koennen doch eigentlich nur Logfiles oder sonstiger Programmoutput sein oder Messdaten. Die kann man meist auch gemeinsam auswerten wenn es zwei separate Dateien sind.
Use ed once in a while!
-
- Beiträge: 141
- Registriert: 06.12.2007 18:03:03
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Kehl
Re: Zwei sehr große Dateien zusammenfügen
Ich grüble nicht über Sinn oder Unsinn der Verbindung beider Dateien. sondern überlege lediglich eine Lösungsmöglichkeit.
Ich kenne die Quellcodes der verwendeten Programme nicht, kann aber nicht ausschließen, dass die eingelesenen Datenmengen den vorhandenen Speicher "sprengen".
Solltest Du programmieren können, würde ich wie folgt vorgehen:
Öffnen beider Dateien. Von der kleineren Datei in einer Schleife nicht zu große Datenmengen einlesen und diese dann ans Ende der größeren Datei schreiben. Eine Steuerung einbauen, dass am Schluss die wahrscheinlich etwas geringere Zahl an Bytes erkannt und geschrieben wird, danach Ende der Schleife. Schließen der Dateien, des Programms.
Wenn die Überlastung des Speichers der Grund für den Absturz sein sollte, müsste es damit funktionieren.
Ich kenne die Quellcodes der verwendeten Programme nicht, kann aber nicht ausschließen, dass die eingelesenen Datenmengen den vorhandenen Speicher "sprengen".
Solltest Du programmieren können, würde ich wie folgt vorgehen:
Öffnen beider Dateien. Von der kleineren Datei in einer Schleife nicht zu große Datenmengen einlesen und diese dann ans Ende der größeren Datei schreiben. Eine Steuerung einbauen, dass am Schluss die wahrscheinlich etwas geringere Zahl an Bytes erkannt und geschrieben wird, danach Ende der Schleife. Schließen der Dateien, des Programms.
Wenn die Überlastung des Speichers der Grund für den Absturz sein sollte, müsste es damit funktionieren.
-
- Beiträge: 3799
- Registriert: 26.02.2009 14:35:56
Re: Zwei sehr große Dateien zusammenfügen
Warum nicht fopen (r.. auf 1. datei und satzweise verarbeiten ? Haben wir auf den IBM-Mainfraimes immer so gemacht - Satz für Satz verarbeiten. Sind ja Textdateien, also Satz für Satz per lf getrennt.
Ansonsten einfach dd verwenden und of weglassen und ausgabe per >> an Datei1 anhängen.
dd if=datei2 bs=4096 >> datei2 sollte es auch tun. (aber immer mit Kopie testen !!!!
Ansonsten einfach dd verwenden und of weglassen und ausgabe per >> an Datei1 anhängen.
dd if=datei2 bs=4096 >> datei2 sollte es auch tun. (aber immer mit Kopie testen !!!!
Re: Zwei sehr große Dateien zusammenfügen
Ihr macht euch zu viele Gedanken! cat(1) kann beliebig grosse Dateien verarbeiten. Selbst das aelteste cat(1) kann Dateien zusammenfuegen, die groesser sind als moderne Dateisysteme sie speichern koennen. Die Begrenzungen liegen nicht am Zusammenfuegen, sondern nur am Speichern im Dateisystem.
Use ed once in a while!