![¿Hay alguna manera de estimar cuánto espacio ocupará un archivo o directorio de un tamaño determinado después de comprimirlo con tar y bzip2?](https://rvso.com/image/1607088/%C2%BFHay%20alguna%20manera%20de%20estimar%20cu%C3%A1nto%20espacio%20ocupar%C3%A1%20un%20archivo%20o%20directorio%20de%20un%20tama%C3%B1o%20determinado%20despu%C3%A9s%20de%20comprimirlo%20con%20tar%20y%20bzip2%3F.png)
Debido a un cambio de distribución inminente, me gustaría hacer una copia de seguridad de mi directorio personal. Sin embargo, mi directorio personal tiene 29 gigabytes. Me gustaría saber cuánto espacio ocuparía esto después de comprimirlo tar cvjf home.tar /home
. ¿Existe alguna forma que pueda utilizar para determinar el tamaño después de la compresión?
Respuesta1
La herramienta está tar
( bzip2
implícitamente involucrada debido a que j
la usó) canalizada a wc
(que es una herramienta estándar (POSIX) para contar bytes). El siguiente comando imprimirá el tamaño en bytes:
tar cj /home | wc -c
El comando realmente hace (y cito otra respuesta aquí) "todo el trabajo del programa de compresión, sin escribir el archivo final, lo que sería una pérdida de tiempo"; pero si realmente quieres saberlo, esta es la única manera firme.
Puede mejorar el enfoque general de esta manera:
tar cj /home | tee home.tbz2 | wc -c
- Si tiene suerte y el espacio que tiene
home.tbz2
resulta ser suficiente, no recibirá ningún errortee
y el archivo terminará con un tamaño igual al quewc -c
se informará. - De lo contrario,
tee
informaráno space left
, pero seguirá escribiendo en su salida estándar.wc -c
le dirá qué tamaño tendría el archivo. El archivo real (incompleto) será más pequeño y deberás eliminarlo después.
Mientras tar
lo usa, v
es posible que se pierda un no space left
mensaje. Aún así, puedes saber qué sucedió comparando el resultado obtenido wc -c
con el tamaño real de home.tbz2
. En Bash puedes recuperar el estado de salida de tee
with ${PIPESTATUS[1]}
.
Respuesta2
Lamentablemente no. La única forma de ver el tamaño de un archivo comprimido es crearlo. No existe ninguna herramienta que haga esto, ya que la herramienta haría todo el trabajo del programa de compresión, sin escribir el archivo final, lo que sería una pérdida de tiempo.
Quizás debería considerar dividir sus datos en partes manejables y crear varios archivos. Esto le permitirá dividir la gran cantidad de tiempo que llevará archivar 29 GB en porciones más pequeñas.
Respuesta3
No es posible saber con certeza a qué tamaño se comprimen los datos sin comprimirlos realmente. Lo que puede hacer: obtenga una suposición fundamentada en función del contenido que tenga en su directorio de inicio. No conozco ninguna herramienta para hacer esto automáticamente, pero no es un proceso difícil.
Muchos formatos de archivos modernos ya están comprimidos, lo que significa que volver a comprimirlos le dará poca o ninguna ganancia (o negativa). Para este tipo de datos, es mejor omitir la compresión y simplemente copiarlos o archivarlos tal como están. Ejemplos de esto serían videos comprimidos (mp4, webm, mov, etc.), imágenes comprimidas (jpeg, png, etc.), archivos existentes (zip, rar, gz, bz2, etc.) y más.
Los archivos de texto generalmente se comprimen bastante bien, especialmente si hay muchos datos repetidos (es decir, archivos de registro). Podría intentar muestrear un subconjunto de archivos para ver cómo se comprimen y usarlo como una estimación o usar algo así como el 50% como una estimación aproximada.
Finalmente, vea qué parte de sus datos se compone de cada tipo y multiplíquelo por su porcentaje estimado para obtener una estimación de su tamaño final. Por ejemplo, si 20 GB de sus datos son datos comprimidos y 9 GB son archivos de texto, el tamaño final de sus datos comprimidos probablemente oscilará entre 21 GB y 25 GB.