Kompresja gzip w locie przed dodaniem do tar


(userrpl) #1

Cześć,

 

da się przed dodaniem folderu do tar-a zarchiwizować go do gzip? np.

 

"tar  rvfp name.tar | gzip > path/file"

 

powyższa komenda mi nie działa. Jeszcze jedno pytanie - co zrobić żeby dodać ostatni plik/katalog w ścieżce, a nie całe drzewo katalogowe?


(ra-v) #2

Najpierw dodaje się wszystko do tara, a potem gzipuje aby zajmowało mniej i łatwiej można było rozpakować.

gzip -zvcf archiwum.tar.gz katalog

(roobal) #3

Po pierwsze to gzip nie archwizuje tylko kompresuje. Po drugie,

Nie działa, bo gzip nie wie co ma kompresować. Powinno to wyglądać tak.

tar rvfp - plik_źródłowy | gzip > plik_wynikowy.tar.gz

Tak poza tym, nie trzeba korzystać z potoku.

tar -rvzfp plik_wynikowy.tar.gz plik_źródłowy

(userrpl) #4

Dzięki za pomoc, ale czy da się dodać sam katalog bez całego drzewa katalogowego?

 

 

path/to/target  - tak, żeby sam "target" dodał się do archiwum bez katalogu "path" i "to" nie przechodząc do katalogu "to"


(roobal) #5

No oczywiście, że się da.


(userrpl) #6

Ok, znalazłem rozwiązanie, ale mam problem z jego zastosowaniem w moim przypadku o tuż stosuję polecenie:

$ find /home/user/backup/backup/Backup/temp/db_1_2014-03-21 -path '*/.*' -prune -o -type f -print |zip -9ry /home/user/backup/backup/Backup/temp/ftp_one.zip . -i /home/user/backup/backup/Backup/temp/ftp_one -@

Postanowiłem stosować archiwizację zip ze względu  wydajnościowych (ponoć szybsza). Wynik powyższego polecenia:  zip error: Nothing to do! 

gdzie popełniam błąd?.


(roobal) #7

Dlaczego nie spróbujesz po prostu?

 

find /home/user/backup/backup/Backup/temp/db_1_2014-03-21 -path '*/.*' -prune -o -type f -print -exec zip -9ry /home/user/backup/backup/Backup/temp/ftp_one.zip . -i /home/user/backup/backup/Backup/temp/ftp_one -@ {}\;

Lub bardziej czytelnie.

 

ZIP=$(zip -9ry /home/user/backup/backup/Backup/temp/ftp_one.zip . -i /home/user/backup/backup/Backup/temp/ftp_one -@)
TARGET=/home/user/backup/backup/Backup/temp/
find $TARGET/db_1_2014-03-21 -path '*/.*' -prune -o -type f -print -exec $ZIP {}\;

Wracając do tar, tar archiwizuje pliki, nie katalogi, więc powinieneś wskazywyać pliki w katalogu, który Cię interesuje. Archiwum możesz potem skompresować dowolnym kompresorem, nie musi to być Gzip czy Bzip2.


(userrpl) #8

Dzięki wielkie za pomoc.