2013-06-27 22 views
5

Mam wymóg przechowywania skompresowanego archiwum plików dziennika. Nazwy plików dziennika są unikalne, a archiwum po rozwinięciu jest po prostu katalogiem zawierającym wszystkie pliki dzienników.Udostępnione skompresowane archiwum

Obecne rozwiązanie nie skaluje się dobrze, ponieważ obejmuje spakowany plik tar. Za każdym razem, gdy plik dziennika jest dodawany, najpierw rozpakowuje całe archiwum, dodaje plik i ponownie gzip.

Czy istnieje narzędzie do archiwizacji systemu Unix, które można dodać do skompresowanego archiwum bez całkowitego rozszerzania i ponownego kompresowania? Czy może to zrobić gzip, biorąc pod uwagę właściwą kombinację argumentów?

Odpowiedz

2

Łatwo jest mieć dostępne archiwum skompresowanych plików (ale nie takie same jak w archiwum z kompresją).

tar ma możliwość dołączania plików do końca archiwum (zakładając, że masz GNU tar)

-r, --append 
     append files to the end of an archive 

Można gzip pliki dziennika przed dodanie do archiwum i może kontynuować aktualizację (dołącz) archiwum z nowszymi plikami.

$ ls -l 
foo-20130101.log 
foo-20130102.log 
foo-20130103.log 
$ gzip foo* 
$ ls -l 
foo-20130101.log.gz 
foo-20130102.log.gz 
foo-20130103.log.gz 
$ tar cvf backup.tar foo*gz 

Teraz masz inny plik dziennika, aby dodać do archiwum:

$ ls -l 
foo-20130104.log 
$ gzip foo-20130104.log 
$ tar rvf backup.tar foo-20130104.log 
$ tar tf backup.tar 
foo-20130101.log.gz 
foo-20130102.log.gz 
foo-20130103.log.gz 
foo-20130104.log.gz