Estoy a punto de comprimir un directorio grande y quiero saber qué tan grande, exactamente, será el archivo resultante.
He intentado usar du
:
$ tar -cv dir | du -h -
du: cannot access '-': No such file or directory
Luego intenté usar la versión del archivo de '-':
$ tar -cv dir | du -h /dev/stdin
1.0K
Estoy seguro de que este número no es exacto. ¿Cómo puedo obtener el tamaño de stdin?
wc
superfluo,-
entonces tampoco necesita elcut
comando posterior .Con GNU
tar
solo puedes hacer:... que generará resultados como ...
... en stderr. Del mismo modo, con cualquier tar (o secuencia) que pueda usar
dd
para entregar un informe sobre el recuento de bytes. Esto puede ser preferible o nowc
, pero el valordd
predeterminado es un tamaño de bloque de 512 bytes, que es idéntico altar
tamaño de bloque de. Si el PIPE_BUF de su sistema es lo suficientemente grande, incluso puede expandirdd
el tamaño de bloque para que coincida contar
el tamaño de registro, que es de 20 bloques o 10240 bytes. Me gusta esto:Esto puede o no ofrecer una solución más eficaz que
wc
.En los dos
dd
ytar
los casos de uso que no necesita realmente deshacerse de la corriente, sin embargo. Redirijo a lo/dev/null
anterior, pero podría haber redirigido fácilmente a algún archivo y aún recibir el informe sobre su tamaño en el momento en que se escribió.fuente
dd
(en comparación conwc
).dd
la salida se transmite, por ejemplo, a un compresor, y por cualquier razón, le resulta deseable conocer tanto el tamaño sin formato del archivo como el comprimido. También es útil obtener un informe instantáneo sobre los recuentos de registros,tar
no es solo un archivo, sino un formato continuo. Se puede usar de otras maneras que no sea simplemente guardar en un grupo de archivos en otro archivo. A menudo es útil para bloquear una secuencia antes de modificarla. En cada uno de esos límites de registro hay un bloque completo de NUL.Sugeriría:
Se usa un simple
c
(no-
se requiere el inicio) para crear untar
archivo,f
especifica un archivo de salida y-
denota que es stdout . (Tenga en cuenta que si quieres sólo el tamaño y hay muchos archivos por debajo de dir es posible que en lugar de omitirtar
'sv
por razones de rendimiento.)fuente
tar
s en el pasado donde se requería especificar un archivo tar (asíf
y-
). - Solo lo busqué; sinf
-
eltar
supuesto/etc/mt0
por defecto./etc/mt0
realmente significa: "cinta magnética" ;-) Me interesaría cómo setar
comporta Solaris (porque Solaris es uno de los sistemas operativos contemporáneos que se sabe que todavía tiene cosas realmente viejas/bin
).-f
bandera atar
?La redacción de su pregunta se presta a las
tar ... | wc -c
respuestas anteriores. Originalmente leí su pregunta con una suposición silenciosa de que deseaba que se informara el tamaño mientras creaba el archivo tar (¿tal vez la salida de tar se canalizaba a través de un enlace de red?).En cuyo caso, sugeriría
pv
: visor de tuberías. He visto referencias a él, pero aún no he tenido la oportunidad de jugar con él.Referencias
fuente