
Gibt es unter Linux ein Programm, das berechnen kann, wie viele Daten ein Programm produzieren würde?
Wenn ich beispielsweise eine Sicherungskopie meiner MySQL-Datenbank erstellen möchte, mache ich normalerweise Folgendes:
mysqldump > dumpfile.sql
Stattdessen möchte ich umleiten, /dev/null
aber berechnen, wie viel Speicherplatz verwendet worden wäre, wie
mysqldump | fancy_space_calc_program
Ausgabe:
123456789 Bytes would have been used
Beachten Sie, dass das MySQL-Backup nur ein Beispiel ist. Ich weiß sehr gut, wie ich die Größe im Voraus abschätzen könnte, also bitte keine Kommentare dazu.
Antwort1
Genommen vonhttps://stackoverflow.com/questions/13418688/use-pipe-with-du-to-compute-size-of-stdin
Sie können es weiterleiten, um
wc -c
die Anzahl der Bytes zu zählen, die durch die Pipeline gehen.
Natürlich handelt es sich dabei nur um die Rohbytes, und sie haben nichts mit der Sektorgröße usw. zu tun, also nehmen Sie es mit Vorsicht ...
Antwort2
Der Befehl pv eignet sich hierfür optimal.
mysqldump | pv -b > /dev/null
Ich denke, das obige wird Ihnen den richtigen Befehl geben, den Sie wollen, es kann einige Anpassungen erfordern, wie pv -b | > /dev/null
ich es gerade nicht testen kann
-b
gibt Ihnen einen Wert in Bytes.
Antwort3
Sie können dd
es beispielsweise wie folgt verwenden cat /dev/zero | dd status=progress of=/dev/null bs=4M
.
Dadurch erhalten Sie während und nach der Ausführung einige Daten über die Menge der übergebenen Daten, wie etwa:
$ cat /dev/zero | dd status=progress of=/dev/null
5371334656 bytes (5.4 GB, 5.0 GiB) copied, 4 s, 1.3 GB/s^C # this is progress data
12271136+0 records in #summary
12271135+0 records out #summary
6282821120 bytes (6.3 GB, 5.9 GiB) copied, 4.66683 s, 1.3 GB/s #summary