Есть ли в Linux программа, которая может рассчитать, сколько данных программа выдаст?
Например, если я хочу сделать резервную копию моей базы данных MySQL, я обычно делаю
mysqldump > dumpfile.sql
Вместо этого я хотел бы перенаправить, /dev/null
но рассчитать, сколько дискового пространства было бы использовано, как
mysqldump | fancy_space_calc_program
Выход:
123456789 Bytes would have been used
Обратите внимание, резервное копирование MySQL является лишь примером. Я очень хорошо знаю, как я могу оценить размер заранее, поэтому, пожалуйста, без комментариев об этом.
linux
disk-space
выпендрежник
источник
источник
Ответы:
Взято с /programming/13418688/use-pipe-with-du-to-compute-size-of-stdin
Конечно, это только необработанные байты, и они не имеют ничего общего с размером сектора и т. Д.
источник
wc
отбросит данные, которые больше не нужны, как только это станет практически возможным.wc
на моем компьютере легко обрабатывает 40 ГБ стандартных данных, используя только 8 ГБ памяти.wc -c
не считает символы - он считает байты.wc -m
считает символы. Наиболее очевидное различие заключается в многобайтовых символах, как в UTF-16 или Windows\r\n
(два байта в ASCII, но один символ). Большую часть времени это не обязательно требует большой буферизации, но Unicode может иметь произвольное количество байтов для представления одного символа; не то, что вы увидите в надежных данных, а возможный вектор переполнения буфера.Команда pv идеально подходит для этого.
Я думаю, что приведенное выше даст вам правильную команду, которую вы хотите, может потребоваться некоторая корректировка, например,
pv -b | > /dev/null
я не могу проверить прямо сейчас-b
дает вам значение в байтах.источник
pv
раньше .. Вы узнаете что-то новое каждый день :)Вы можете использовать
dd
для этого, как этоcat /dev/zero | dd status=progress of=/dev/null bs=4M
.Это предоставляет вам некоторые данные во время и после выполнения о количестве данных, переданных ему, например:
источник