Remover arquivo específico do processo de arquivamento Tar após o início do processo

1

Ao acessar diretórios grandes (ou seja, uma pasta base para um backup / reinstalação do sistema operacional), geralmente é correto excluir determinados arquivos grandes, como vídeos com vários GB. No entanto, devido à natureza abrangente de uma pasta base, muitas vezes é irreal lembrar cada arquivo que pode ser útil para excluir (com - excluir) antes de iniciar. Eu estou procurando por algum tipo de entrada que eu possa dar ao tar para dizer a ele para sair de qualquer arquivo que estiver e passar para o próximo, deixando o arquivo retirado do arquivo. Talvez como um control-C, mas em vez de parar todo o processo, simplesmente pare o arquivo atual.

Especificamente, estou me referindo a uma longa execução tar -cvf ou tar -cvzf . Como ambos os comandos contêm -v , é fácil determinar em qual arquivo o tar está atualmente.

O uso de qualquer tipo de ferramenta GUI não é uma opção, já que o tar é executado com frequência em um ambiente mínimo (somente CLI) em um sistema quebrado antes de uma reinstalação. Este é o caso específico que estou perguntando.

    
por john01dav 01.10.2015 / 06:09

2 respostas

0

Eu não acho que isso seja possível, mas você pode simplesmente excluir grandes arquivos automaticamente do seu tar. Por exemplo,

find mydir ! -type f -o \( -type f -size -1000k \) | tar cv --no-recursion -T - -f /tmp/tar 

que não salva arquivos maiores que 1000k.

Aqui está um script para pedir interativamente uma resposta "n" para impedir que arquivos grandes sendo arquivado:

find mydir \( -type f -size +1000k -exec /tmp/biggie {} \; \) -o -print |
tar c --no-recursion -T - -f /tmp/tar

onde /tmp/biggie é o script

#!/bin/bash
if ! read -t 10 -n 1 -p "$1 ok ?" reply || [ n != "$reply" ]
then echo >&2
     echo "$1"
else echo " ignoring $1" >&2
fi

que faz uma leitura específica do bash com timeout de 10 segundos de 1 char (-n), com o nome do arquivo como prompt (-p). Se você digitar "n" dentro de 10 segundos o arquivo é ignorado.

    
por 01.10.2015 / 10:38
0

É claro que não há como dizer a um programa em execução para alterar sua configuração inicial, a menos que este programa lhe peça isso.

Se você quiser apenas evitar arquivos grandes, recomendo usar star em vez do tar não padrão que você já está usando.

star -c -f out.tar -find startdir -size -1g

Use o tamanho apropriado em vez do 1G no exemplo.

Isso é muito mais rápido do que usar uma chamada de programa de busca separada e isso evita efeitos colaterais de personagens engraçados em nomes de arquivos.

    
por 01.10.2015 / 12:21