dateien zusammenfühern

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
bonbon2k6
Beiträge: 226
Registriert: 25.08.2007 12:37:18

dateien zusammenfühern

Beitrag von bonbon2k6 » 16.04.2008 14:18:32

Hi!

gibt es einen Befehl, mit dem man 2 Dateien kompromisslos zusammenführen kann? Ich weiß, man könnte mittels cat und Ausgabeumleitung arbeiten, aber ich möchte zwei Dateien direkt verschmelzen. Jede ist relativ groß und die Platte komplett gefüllt...

mfg

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: dateien zusammenfühern

Beitrag von cirrussc » 16.04.2008 22:43:45

bonbon2k6 hat geschrieben:Ich weiß, man könnte mittels cat und Ausgabeumleitung arbeiten, aber ich möchte zwei Dateien direkt verschmelzen.
Aber genau das machst du doch mit cat!
Vllt. solltest du ein gepacktes Archiv benutzen Stichwort: tar, bzip2, gzip.
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

Benutzeravatar
bytezero
Beiträge: 117
Registriert: 23.06.2007 12:01:45
Wohnort: Wuppertal

Re: dateien zusammenfühern

Beitrag von bytezero » 17.04.2008 15:09:56

cat datei1 datei2 > /dev/externe-USB-Platte ?

bonbon2k6
Beiträge: 226
Registriert: 25.08.2007 12:37:18

Re: dateien zusammenfühern

Beitrag von bonbon2k6 » 17.04.2008 19:42:46

naja ne. ihr habt den witz des cat - befehles noch nicht verstanden...

cat listet den Inhalt einer Datei und leitet ihn eben von der StandartAusgabe in eine Datei...

Ich habe eine Platte 80 GB und auf dieser sind 2 Dateien zu jeweils 40GB...
Wenn man dann cat datei1 >> datei2 ausführen WÜRDE, würde es abbrechen :) Warum? Platte hat nur 80 GB. Was ich möchte ist: datei1 (40gb) und datei2 (40gb) zu einer datei, z.B. dateigesamt, zusammenfügen...

Ich glaube aber, dass es dafür keine direkte funktion zu geben scheint.

mfg

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: dateien zusammenfühern

Beitrag von cirrussc » 17.04.2008 20:04:03

bonbon2k6 hat geschrieben:Was ich möchte ist: datei1 (40gb) und datei2 (40gb) zu einer datei, z.B. dateigesamt, zusammenfügen...
Das klingt unlogisch. Warum lässt du die 2 Dateien nicht einfach, der Platzbedarf erhöht sich doch nur bei vielen kleinen Dateien.
Zudem musst du dann noch ein Programm finden was mit so einer Verstümmelten Datei was anfangen kann (blind zusammengepappt).
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

cosmac
Beiträge: 4579
Registriert: 28.03.2005 22:24:30

Re: dateien zusammenfühern

Beitrag von cosmac » 17.04.2008 20:20:40

hi,

debugfs -- du brauchst nur die Blockliste aus der Inode der
zweiten Datei in die Inode der ersten zu kopieren. Dann noch
die zweite Inode freigeben (auch in der Bitmap) -- fertig ;)

Falls die große Datei zusätzliche indirekte Blöcke für die Blockliste
braucht, mußt du die entsprechend reservieren. Und dann mußt
du dich noch um alle die Zeiger, Listen, Bitmaps, Prüfsummen
usw. kümmern, die ich jetzt vergessen hab :!:

In dieser einen großen Datei ist jetzt allerdings in der Mitte ein
"Loch" (besser gesagt ein paar zusätzliche Bytes), weil die erste
Datei höchstwahrscheinlich den letzten Block nicht ganz gefüllt
hatte. Um das zu beheben, brauchst du nur innerhalb der großen
Datei die Bytes der zweiten zu lesen und entsprechend weiter
vorne neu zu schreiben (blockweise).

Also, ich glaub', ich würde eine zweite Platte organisieren...
Beware of programmers who carry screwdrivers.

admappr
Beiträge: 72
Registriert: 08.11.2005 18:38:40
Wohnort: Äpplergegend

Re: dateien zusammenfühern

Beitrag von admappr » 18.04.2008 08:11:32

Hallo,
bonbon2k6 hat geschrieben: gibt es einen Befehl, mit dem man 2 Dateien kompromisslos zusammenführen kann? Ich weiß, man könnte mittels cat und Ausgabeumleitung arbeiten, aber ich möchte zwei Dateien direkt verschmelzen. Jede ist relativ groß und die Platte komplett gefüllt...
mfg
...möglicherweise habe ich nicht genau verstanden, was Du wirklich machen willst.
Deine Antworten auf die bisherigen Kommentare lassen mich glauben, daß Du das konkatenierte File nicht auf Platte schreiben (weil zu groß bzw. zu wenig Plattenplatz) sondern weiterverarbeiten möchtest.
Wenn dem so ist, könnte

cat file1 file2 | more

helfen.
Der erste Befehl liefert hintereinander file1 und dann file2 und schreibt die Ausgabe nach stdout. Dies wird dann an den dem Pipe-Symbol "|" folgenden Befehl übergeben.
Grüße
admappr

bonbon2k6
Beiträge: 226
Registriert: 25.08.2007 12:37:18

Re: dateien zusammenfühern

Beitrag von bonbon2k6 » 19.04.2008 16:45:28

naja. ich sage euch den Hintergrund (dachte ist unwichtig)
Ich möchte einen Container erstellen für ein verschlüsselungs-experiment. Dieser sollte 80 GB groß sein. Um eine derartige Datei zu erhalten habe ich Parallel zwei Dateien mit Nullen (/dev/zero) erstellen lassen. Diese sollten dann zusammen geklebt werden.

Der Grund: Ich dachte es geht schneller, zwei Dateien parallel zu erstellen und zusammen zu fügen. Weil es dauert bei mir mehr als 2 Stunden wenn ich folgendes ausführe:

Code: Alles auswählen

dd if=/dev/zero of=./datei bs=1000M count=80
Ich finde ein so belangloser prozess sollte innerhalb weniger minuten abgeschlossen sein =) Vll kennt jemand Abhilfe.

mfg

cosmac
Beiträge: 4579
Registriert: 28.03.2005 22:24:30

Re: dateien zusammenfühern

Beitrag von cosmac » 19.04.2008 17:21:06

hi,

mein Tipp: die Blocksize ist zu groß, vielleicht muss er
dabei sogar swappen.

Du könntest die "seek"-Option von dd ausprobieren:

Code: Alles auswählen

dd if=/dev/zero of=./datei bs=4096 count=1 seek=19531249
damit wird in < 1 Sekunde eine "sparse" Datei erzeugt, aus der
man 80GB Nullen lesen kann. Nachteil: auf der Platte werden
alte Daten nicht sofort überschrieben.

2 Dateien gleichzeitig zu schreiben kann nicht schneller gehen,
weil ständig zwischen den beiden dd umgeschaltet werden muss.
Wenn's ganz blöd kommt, muss die Platte noch jedesmal neu
positionieren, dann wird's wirklich langsam. Normal dürfte man
keinen Unterschied merken. Gigabytes zu schaufeln kostet
einfach Zeit. Unter 30 Minuten wirst du kaum kommen, schafft
eine 80er Platte 44MB/s?
Beware of programmers who carry screwdrivers.

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: dateien zusammenfühern

Beitrag von cirrussc » 19.04.2008 20:03:56

bonbon2k6 hat geschrieben:Ich finde ein so belangloser prozess sollte innerhalb weniger minuten abgeschlossen sein =) Vll kennt jemand Abhilfe.
Bonbon2k6, eine Festplatte hat eine begrenzte Transferrate d.h. heute können noch nicht z.B. 20GB/s mit einer Platte erreicht werden :wink:
Und wie cosmac schon sagt, kostet es genau so viel Zeit zwei 40GB Dateien oder eine 80GB grosse zu erstellen.
cosmac hat geschrieben:Unter 30 Minuten wirst du kaum kommen, schafft
eine 80er Platte 44MB/s?
Ja schaffen sie, unter optimalen Bedingungen.
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

bonbon2k6
Beiträge: 226
Registriert: 25.08.2007 12:37:18

Re: dateien zusammenfühern

Beitrag von bonbon2k6 » 20.04.2008 11:58:59

hi,

die Seek-Option teste ich mal aus. Ich habe es jetz einfach mittels cat /dev/zero >> datei gemacht bis halt alles voll war.

Ne mein Hintergedanke war der: Man definiert am Plattenanfang eine Datei dieser Größe, ohne sie wirklich zu erstellen - wisst ihr? Aber dazu habe ich zu wenig Ahnung von den Dateisystemen. Weil an sich werden ja die nullen zu einem anderen Zweck überschrieben - mit verschlüsselten daten. Warum also erst so viele Nullen - mit so viel Zeitaufwand - schreiben.

Ext3 z.B. löscht auch nur irgendwelche Pointer und hat neuen Platz, auch wenn physisch noch alles da ist. So wollte ich es auf der Platte machen...könnte vll schwer werden, da ich ext2 verwende.

Mfg

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22456
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: dateien zusammenfühern

Beitrag von KBDCALLS » 20.04.2008 13:03:45

Anlegen einer Sparse Datei mit dd

Code: Alles auswählen

dd if=/dev/zero of=datei obs=1 count=0 seek=1G
eine Kontrolldatei mit 1G

Code: Alles auswählen

dd if=/dev/zero of=datei2 bs=1024 count=1048576
Und die Kontrolle

Code: Alles auswählen

root@biljana:/home# ls -l datei datei2
-rw-r--r-- 1 root root 1073741824 20. Apr 12:50 datei
-rw-r--r-- 1 root root 1073741824 20. Apr 12:56 datei2
root@biljana:/home# ls -l datei datei2 -h
-rw-r--r-- 1 root root 1,0G 20. Apr 12:50 datei
-rw-r--r-- 1 root root 1,0G 20. Apr 12:56 datei2
root@biljana:/home#

Code: Alles auswählen

root@biljana:/home# stat datei ;stat datei2
  File: „datei“
  Size: 1073741824      Blocks: 0          IO Block: 4096   reguläre Datei
Device: 803h/2051d      Inode: 147700      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2008-04-20 12:52:30.000000000 +0200
Modify: 2008-04-20 12:50:31.000000000 +0200
Change: 2008-04-20 12:50:31.000000000 +0200
  File: „datei2“
  Size: 1073741824      Blocks: 2099208    IO Block: 4096   reguläre Datei
Device: 803h/2051d      Inode: 147701      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2008-04-20 12:56:19.000000000 +0200
Modify: 2008-04-20 12:56:53.000000000 +0200
Change: 2008-04-20 12:56:53.000000000 +0200
root@biljana:/home#
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

bonbon2k6
Beiträge: 226
Registriert: 25.08.2007 12:37:18

Re: dateien zusammenfühern

Beitrag von bonbon2k6 » 21.04.2008 17:16:57

kuhl. das hab ich eigentlich gesucht :)

Müsste ja eigentlich mittels dieser Sparse-Datei gehen.

Ich dank dir!

mfg

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: dateien zusammenfühern

Beitrag von roli » 04.05.2008 16:04:08

Hi,

beim Surfen bin ich gerade über folgendes gestolpert:
Mit sponge Änderungen an Dateiinhalt ohne temporäre Dateien vornehmen
Wenn man normalerweise Änderungen am Inhalt einer Datei vornehmen möchte benötigt man eine temporäre Datei, da man nicht gleichzeitig aus einer Datei lesen und in sie zurückschreiben kann. Das ist oft sehr unbequem, vor allem weil das sichere Erzeugen einer temporären Datei nicht völlig trivial ist.
Ein Lösung für dieses Problem ist sponge:

cat foo.txt | sed s/t/T/ | sponge foo.txt

Das funktioniert aber nur wenn sponge in eine Datei schreibt, leitet man die Ausgabe von sponge weiter funktioniert es nicht. In Debian ist sponge zur Zeit im Paket moreutils enthalten.
Das muesste man auch auf dein Problem anpassen koennen, denke ich.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Antworten