Empacotamento de arquivos com GNU tar O GNU tar é uma implementação do tar com extensões próprias. O tar é uma ferramenta original da sétima edição do Unix da AT&T. Antes de se tornar um padrão POSIX, vários fabricantes criaram suas próprias extensões, incluindo o projeto GNU. Hoje em dia, o padrão para empacotamento é o pax, extensão do tar padronizada pelo POSIX 2001. Outras ferramentas livres que suportam o tar são star e bsdtar. Outros softwares e formatos de empacotamento incluem ar, shar, cpio. Vamos nos dedicar à ferramenta GNU tar nesta seção. O objetivo do empacotador é armazenar vários arquivos em apenas um só. Dentre as várias operações com um pacote, as principais são criar e extrair. O GNU tar ainda permite as operações: A concatenar pacotes c criar pacote d comparar pacote com sistema de arquivos r anexar arquivos a um pacote t listar arquivos de um pacote u apenas anexar arquivos que são mais novos que no pacote x extrair arquivos de um pacote Há ainda a opção --delete que permite remover arquivos de um pacote. No entanto, essa opção não é apropriada para fitas. O nome tar vem de "Tape ARchiver". Foi criado para permitir o armazenamento dos pacotes em fitas, já que escrevia apenas sequencialmente e em blocos. Há uma pequena diferença do GNU tar pras demais ferramentas GNU em relação às opções. Em primeiro lugar, o primeiro conjunto de opções curtas pode omitir o hífen inicial. Em segundo lugar, uma opção de operação é obrigatória. Isso implica que sempre deve haver alguma opção antes do primeiro parâmetro. Como em outras ferramentas GNU, opções que requerem parâmetros devem ser seguidas por esses imediatamente. A saída padrão é usada para gravar o pacote e a entrada padrão para ler o pacote, a não ser que se use a opção -f, que requer um nome de arquivo como parâmetro. Algumas outras opções: -C diretório onde extrair arquivos -f nome do pacote a criar, atualizar ou extrair -j filtrar usando bzip2 (para compressão/descompressão) -v verbosidade, lista arquivos processados -x filtrar usando gzip (para compressão/descompressão) Exemplos Para criar um pacote com os arquivos no diretório /bin: tar c /bin > bin.tar tar -c /bin > bin.tar tar cf bin.tar /bin tar -f bin.tar -c /bin tar c /bin -f bin.tar Para extrair os arquivos do pacote bin.tar no diretório corrente: cat bin.tar | tar x tar x < bin.tar tar xf bin.tar tar -x -f bin.tar tar -xf bin.tar Para extrair os arquivos do pacote bin.tar no diretório /bin: tar -xf bin.tar -C /bin tar C /bin -x < bin.tar Para comprimir/descomprimir o pacote: cat bin.tar.gz | gzip -cd | tar x gunzip -c bin.tar.gz | tar x tar xzf bin.tar.gz tar cjf bin.tar.bz2 /bin tar -cj /bin > bin.tar.bz2 tar c /bin | bzip2 -c > bin.tar.bz2 Para listar os arquivos em um pacote: tar tjf bin.tar.bz2 cat bin.tar.gz | tar tz