Gibt es unter Linux ein Programm, das berechnen kann, wie viele Daten ein Programm produzieren würde?
Wenn ich zum Beispiel eine Sicherungskopie meiner MySQL-Datenbank erstellen möchte, würde ich dies normalerweise tun
mysqldump > dumpfile.sql
Stattdessen möchte ich umleiten, /dev/null
aber berechnen, wie viel Speicherplatz wie verwendet worden wäre
mysqldump | fancy_space_calc_program
Ausgabe:
123456789 Bytes would have been used
Beachten Sie, dass das MySQL-Backup nur ein Beispiel ist. Mir ist sehr wohl bekannt, wie ich die Größe vorab einschätzen kann, also bitte keine Kommentare dazu.
linux
disk-space
schicke Hose
quelle
quelle
Antworten:
Entnommen aus https://stackoverflow.com/questions/13418688/use-pipe-with-du-to-compute-size-of-stdin
Das sind natürlich nur die rohen Bytes und haben nichts mit der Sektorgröße usw. zu tun. Nehmen Sie es also mit einem Körnchen Salz ...
quelle
wc
werden Daten verworfen , die nicht mehr benötigt werden, sobald dies praktikabel ist.wc
auf meinem Computer verarbeiten problemlos 40 GB Standarddaten mit nur 8 GB Arbeitsspeicher.wc -c
keine Zeichen, sondern Bytes.wc -m
zählt Zeichen. Der offensichtlichste Unterschied besteht in Multibyte-Zeichen wie in UTF-16 oder Windows\r\n
(zwei Bytes in ASCII, aber ein Zeichen). Die meiste Zeit muss nicht unbedingt viel gepuffert werden, aber Unicode kann eine beliebige Anzahl von Bytes aufweisen, um ein einzelnes Zeichen darzustellen. Nicht etwas, das Sie in vertrauenswürdigen Daten sehen würden, sondern ein möglicher Pufferüberlaufvektor.Der Befehl pv ist dafür perfekt.
Ich denke, das obige gibt Ihnen den richtigen Befehl, den Sie wollen. Möglicherweise muss er angepasst werden, so
pv -b | > /dev/null
wie ich es derzeit nicht testen kann-b
gibt Ihnen einen Wert in Bytes.quelle
pv
.. Sie lernen jeden Tag etwas Neues :)Sie können
dd
es so verwendencat /dev/zero | dd status=progress of=/dev/null bs=4M
.Dadurch erhalten Sie während und nach der Ausführung einige Daten über die an sie übergebene Datenmenge, wie z.
quelle