2009-07-11 12 views
17

¿Cuál es la mejor manera de crear un archivo tar con gzip con Ruby?Ruby: Crear un archivo comprimido Gzipped

Tengo una aplicación Rails que necesita crear un archivo comprimido en respuesta a las acciones del usuario. Idealmente, sería posible escribir directamente en un archivo comprimido sin necesidad de generar archivos temporales intermedios primero. La biblioteca Ruby Zlib parece ser compatible con la compresión gzip directa. ¿Cómo puedo combinar esto con la producción de alquitrán?

Parece que se han propuesto una serie de cuasi soluciones y parece que gran parte de la información está desactualizada.

Por ejemplo, el resultado de búsqueda de Google superior para "ruby tar" da this thread, que se inició en 2007 aparentemente sin resolución.

Otro resultado de búsqueda de alto rango es this one describing ruby tar. Se remonta a 2002, y el anuncio no inspira confianza.

También he visto varios informes de bombardeos a unix tar y similares.

Entonces, sé que hay muchas formas de hacerlo, pero realmente estoy buscando una recomendación de alguien que haya probado algunas de las alternativas más confiable y conveniente.

¿Alguna idea?

+0

¿Has encontrado una respuesta? – hornairs

+0

Esto es muy similar a mi pregunta: http://stackoverflow.com/questions/7856491/ruby-streaming-tar-gz ¿Alguien encuentra una respuesta? –

+0

Todavía estoy jugando con esto, pero parecía una buena idea. Ruby's [Archivo :: Tar] (http://www.ruby-doc.org/gems/docs/a/archive-tar-0.9.0/Archive/Tar.html) – Pred

Respuesta

4

Este proyecto Ruby Minitar se actualizó en 2009 y parece que sería resolver su problema

+0

Minitar no parece permitir escribir tars de una secuencia, solo de archivos. Sin embargo, puede dar salida a una secuencia. –

9

Si usted está funcionando bajo Unix, se podría escribir los archivos al disco, a continuación, ejecutar una llamada al sistema de tar/gzip ellas .

`tar -czf #{file_name}.tar.gz #{file_name}` 
+0

Me gusta esto - muy fácil. A pesar de que no verifica que "tar" esté instalado en su sistema, es una suposición razonable si tienen ruby ​​:) No olvide los "backs" "alrededor". ASÍ NO ME DEBERÍA AGREGAR ESPACIOS EN ELANTERO PARA QUE ESTÉN VISIBLES. –

Cuestiones relacionadas