Gerando conjuntos de arquivos que cabem em um determinado tamanho de mídia para tar -T

5

Alguém pode sugerir um script que terá como entrada o nome de um ou mais diretórios e um tamanho de mídia, e listas de saída de arquivos para entrada para tar usando -T (assumindo que não há compressão)?

scdbackup / sdvdbackup mais ou menos isso, mas está cheio de inchaço que eu não preciso. Então, basicamente, procurando por algo como isto:

./splitTars file1 file2 .... 2.0T

em que file pode ser um arquivo ou diretório e o último argumento é o tamanho da mídia (por exemplo, 2TB). Em seguida, deve gerar uma lista de arquivos para cada arquivo tar e dar um aviso para arquivos que são grandes demais para caber na mídia.

Se nada assim existir, uma maneira de fazer isso seria criar a lista de arquivos usando o comando localizar, reorganizando-os em tamanho crescente ou decrescente e, em seguida, começar a cortar a lista em partes.

    
por sabujp 12.08.2011 / 14:03

2 respostas

3

Acho que você tem o problema da mochila para tamanhos de arquivo.

O que basicamente significa, dado um conjunto de arquivos, encontrar os melhores grupos de arquivos que podem ser colocados em uma mídia de backup de tamanho fixo (nossa mochila). Em seguida, você deseja usar os conjuntos indicados para criar arquivos tar e transferi-los, um de cada vez, a partir de sua máquina local usando qualquer unidade de disco rígido ou flash que você tenha.

Estou delineando uma solução de amostra em python - suit de acordo com suas habilidades de programação.

  1. Pegue todos os argumentos de entrada em um script python e encontre os tamanhos de arquivo de arquivos ou diretórios individuais. Você pode chamar um du -sm em cada arquivo ou argumento de diretório para que o python não tenha que fazer o trabalho duro de encontrar tamanhos individuais de diretórios.

  2. Elimine imediatamente o limite da mídia.

  3. Adicione o restante a uma lista e aplique o algoritmo de mochila ao conjunto inteiro. Muitos exemplos estão por aí, como a solução de Mike aqui.

  4. Elimine os que são adicionados à mochila em uma rodada e retorne à etapa 3 com a lista de sobras.

  5. Repita as etapas 3-4-3 acima até que todos os itens restantes na lista possam caber em uma mochila (ou seja, o tamanho total dos itens restantes é menor que o limite de mídia).

Deve ser isso!

    
por 12.08.2011 / 19:24
0

find tem uma opção para filtrar por tamanho:

# find file1 file2 .... -size -2000G
    
por 12.08.2011 / 17:23