Como posso usar o comando tar para agrupar arquivos sem compactação?

60

Eu tenho uma pasta muito grande de mais de 120.000 arquivos. e preciso movê-los para outro local na minha mesma máquina (mesma partição).

Eu gostaria de usar o tarcomando para agrupá-los como uma única unidade e depois mvpara o local final.

Qual comando eu preciso executar para tartodos eles juntos e não compactar nada (eu preciso do resultado mais rápido).

sergserg
fonte
1
Por que usar tar, e não apenas mv (1) os arquivos? Ou use cp (1) se não quiser perder os originais?
vonbrand
@ vonbrand pode-se querer sincronizar através da rede um único arquivo contínuo. muito mais rápido que sincronizar arquivos 120k menores. é a diferença entre a constante velocidade para altos e baixos
mwm

Respostas:

85

tar não compacta por padrão, apenas não adicione uma opção de compactação:

tar cvf myfolder.tar myfolder

Estou incluindo o comentário de Hennes na minha resposta, pois adiciona informações úteis:

TAR (arquivo de fita) é originalmente um programa unix usado para criar arquivos em fita. Como todos os dispositivos são tratados como arquivos no unix, é fácil não gravar em uma fita, mas em um arquivo. Isso geralmente é feito com o sinalizador -f. O meio myfolder.tar MyFolder tar comando cvf alcatrão, c reate, v erbose f ile filename_to_create what_to_tar. Não há compressão neste local. Os arquivos tar (como arquivos) eram frequentemente compactados usando o programa compress e ganhavam a extensão .Z (por exemplo, file.tar.Z). Mais tarde, isso foi incluído no gtar com a bandeira z

Terdon
fonte
Isso adicionará recursivamente todas as subpastas e arquivos no tar?
sergserg
2
@Serg sim, será.
terdon
1
Obrigado. Normalmente, tento responder de forma curta e longa. Como em "sim / não, [não] funcionará" para o curto, e uma explicação sobre o porquê da resposta mais longa. Ter o histórico de por que muitas vezes ajuda no futuro.
Hennes
@Serg: nem sempre é o caso de um manual ou instruções serem tão bons que deixam as coisas claras logo de início, às vezes, a melhor maneira é seguir em frente e tentar o comando de qualquer maneira, para ver o que ele faz, e depois que você souber o que faz ou tiver uma boa ideia, o manual poderá confirmar isso para você! é fácil testar o tar em um pequeno conjunto de arquivos. com exemplos de como usá-lo, sem ter que fazer parte do manual.
barlop
Observe que se os resultados mais rápidos forem desejados, você deve omitir o sinalizador "v" para silenciar a saída. No meu caso, isso reduziu o tempo de comando de 16 segundos para 6 segundos ao executá-lo em uma instância do AWS t2.medium.
David Backeus 04/09
6

A resposta @terdon está certa.

Mas cometi um pequeno erro ao fazer tar cvf myfolder.tar.gz myfolder. Eu queria os mesmos nomes finais para os arquivos no mesmo caminho, tar.gzmesmo quando não estiverem compactados.

Portanto, se você colocar algo como .gz, .zno final do nome do arquivo que está tentando tar, o aplicativo tar entenderá que você deseja usar alguma compactação e será aplicado de acordo com o que você colocou (gz = gzip).

Portanto, se você quiser usar uma extensão como essa tar.gz, use a sinalização--no-auto-compress

--no-auto-compress    do not use archive suffix to determine the compression 
program
Ratata Tata
fonte