2009-07-11 13 views
17

Qual è il modo migliore per creare un archivio tar gzip con Ruby?Ruby: creare un archivio tar gzipato

Ho un'app Rails che deve creare un archivio compresso in risposta alle azioni dell'utente. Idealmente, sarebbe possibile scrivere direttamente su un file compresso senza la necessità di generare prima i file temporanei intermedi. La libreria Ruby Zlib sembra supportare la compressione diretta gzip. Come posso combinare questo con l'output di tar?

Un numero di quasi-soluzioni sembrano essere state proposte e molte informazioni sembrano non aggiornate.

Ad esempio, il risultato di ricerca di Google in alto per "ruby tar" dà this thread, che è stato avviato nel 2007 con apparentemente nessuna risoluzione.

Un altro risultato di ricerca di alto livello è this one describing ruby tar. Risale al 2002 e l'annuncio non ispira esattamente la fiducia.

Ho anche visto varie segnalazioni di bombardamenti per unire tar e simili.

Quindi, so che ci sono molti modi per farlo, ma sto davvero cercando una raccomandazione al più affidabile e conveniente da qualcuno che ha provato alcune delle alternative.

Qualche idea?

+0

Hai trovato una risposta? – hornairs

+0

Questo è molto simile alla mia domanda: http://stackoverflow.com/questions/7856491/ruby-streaming-tar-gz Chi trova una risposta? –

+0

Sto ancora giocando con questo, ma questa mi è sembrata una buona idea. Ruby's [Archive :: Tar] (http://www.ruby-doc.org/gems/docs/a/archive-tar-0.9.0/Archive/Tar.html) – Pred

risposta

4

Questo progetto Ruby Minitar è stato aggiornato nel 2009 e sembra che sarebbe risolvere il problema

+0

Minitar non sembra permettere di scrivere catrami da uno stream, solo da file. Tuttavia, può emettere un flusso. –

9

Se stai usando Unix, si potrebbe scrivere i file su disco, quindi eseguire una chiamata di sistema per tar/gzip loro .

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

Mi piace - molto facile. Anche se non controlla che "tar" sia installato sul tuo sistema, è ragionevole supporre che abbiano rubino :) Non dimenticare i backtick "' "che lo circondano. SO non mi permetterebbe di aggiungere spazi davanti in modo che siano visibili. –

Problemi correlati