Tengo una máquina con un 90% de uso de disco duro. Quiero comprimir sus más de 500 archivos de registro en un nuevo archivo más pequeño. Sin embargo, el disco duro es demasiado pequeño para mantener tanto los archivos originales como los comprimidos.
Entonces, lo que necesito es comprimir todos los archivos de registro en un solo archivo nuevo uno por uno, eliminando cada original una vez comprimido.
¿Cómo puedo hacer eso en Linux?
Respuestas:
gzip
obzip2
comprimirá el archivo y eliminará el no comprimido automáticamente (este es su comportamiento predeterminado).Sin embargo, tenga en cuenta que durante el proceso de compresión, ambos archivos existirán.
Si desea comprimir archivos de registro (es decir, archivos que contienen texto), puede preferirlo
bzip2
, ya que tiene una mejor relación para los archivos de texto.Comparación y ejemplos:
ACTUALIZACIÓN como @Jjoao me dijo en un comentario, curiosamente,
xz
parece tener una mejor relación en archivos sin formato con sus opciones predeterminadas:Para obtener más información, aquí hay un punto de referencia interesante para diferentes herramientas: http://binfalse.de/2011/04/04/comparison-of-compression/
Para el ejemplo anterior, lo uso
-9
para una mejor relación de compresión, pero si el tiempo necesario para comprimir datos es más importante que la relación, será mejor que no lo use (use una opción más baja, es decir-1
, o algo intermedio).fuente
xz myfile
?xz
, pero lo consideraré ahora. Ver la actualización de mi publicación.xz -9
. Aumenta enormemente la memoria requerida para la compresión / descompresión, sin mejorar significativamente la relación de compresión. La página de manual incluso dice (énfasis en el suyo) "Específicamente, no es una buena idea usar ciegamente -9 para todo lo que suele ser con gzip (1) y bzip2 (1)". El valor predeterminadoxz -6
es lo suficientemente bueno, e inclusoxz -0
/xz -1
generalmente se comprime mejor quegzip -9
.-9
, pero lo usé aquí porque quería hacer algún tipo de punto de referencia para la relación de compresión "en la misma escala". Pero una vez más, tienes toda la razón: es una mala idea usar a ciegas-9
.Descubrí una solución de alquitrán por mí mismo.
Elimina un solo archivo después de comprimirlo en el archivo de destino.
Sin embargo, la velocidad de compresión no es bastante rápida. El comando se ve así:
fuente
En complemento a @apaul, enfatizo que la compresión de archivos individualmente
(reemplazar bzip2 por gzip, xz, o el archivo zip que prefiera) puede ser importante:
De esta manera, aún puede ver (
bzcat file.bz2
), buscar (bzgrep file.bz2
), editar (vi file.bz2
) el archivo comprimido y eliminar los anteriores cuando sea necesario.fuente
Estaba tratando de hacer esto en la versión BSD de tar. En este caso, la opción --remove-files no está disponible. Lo que terminé haciendo (y trabajé) fue:
fuente