2017/01/23

Obsługa plików tar

1 obsługa plików tar

Biblioteka standardowa Pythona umożliwia (także pod Windowsem) pakowanie i rozpakowywanie archiwów tar (tar.gz i tar.bz2 też). Poniżej prosty przykład jak użyć tej biblioteki do pakowania listy plików.

import tarfile
import sys
from os import sep as separator
from os.path import exists


def ustaw_uprawnienia(tarinfo):
        tarinfo.mode = 0o444
        tarinfo.uid = 0
        tarinfo.gid = 0
        tarinfo.uname = 'root'
        tarinfo.gname = 'root'
        return tarinfo

def pakuj(plik_tar,lista_plikow,mode='w:gz'):
        with tarfile.open(plik_tar,mode) as tar:
                for plik in lista_plikow:
                        #usun sciezke z docelowej nazwy pliku
                        gdzieslash = plik.rfind(separator)+1
                        krotka_nazwa = plik[gdzieslash:]
                        tar.add(plik,krotka_nazwa,filter = ustaw_uprawnienia)

if __name__ == '__main__':
        if(len(sys.argv)<2):sys.exit('podaj nazwe archiwum oraz liste plikow do spakowania')
        wynikowy_tar = sys.argv[1]
        if(exists(wynikowy_tar)):sys.exit('plik archiwum nie moze istniec')
        lista_plikow = sys.argv[2:]
        pakuj(wynikowy_tar,lista_plikow)

Powyższy program nadaje uprawnienia 0444 i ustawia właściciela/grupę wszystkich plików dodawanych do archiwum na root.root. Dodatkowo – usuwane są wszystkie informacje o katalogach (scieżka jest usuwana w linijkach 19-20).

Brak komentarzy:

Prześlij komentarz