Sistema de diretórios de arquivo com compactação para subdiretórios - dar?

1

Eu tenho uma coleção grande (~ 100GB não compactada) de arquivos que quero armazenar em < Pedaços de 2 GB para backup em um sistema de armazenamento baseado no Windows Server. Estou executando o Ubuntu na minha estação de trabalho.

Os conjuntos de dados são coletados em subdiretórios, com um tipo de estrutura em camadas. (por exemplo, o diretório A contém três subdiretórios 1, 2, 3, cada um contendo subdiretórios de 30, cada um contendo 6 ou 7 arquivos, com os mesmos nomes (em cada subdiretório))

tar compactará e arquivará meus dados, mas se eu quiser acessar seções individuais, será bastante doloroso. Também é lento, e se eu usar compressão, eu tenho que descomprimir antes de poder extrair diretórios individuais (afaik)

Isso estaria usando algo como:

tar -cf mySuperStructure.tar;
split -b 1024M mySuperStructure.tar mySuperStructure.tar.part- ;
gzip mySuperStructure.tar.part-* ;

ou similar - Eu sei que o tar tem uma opção -z , mas acho que isso pode ser problemático ao usar split ? Da mesma forma, acredito que há uma opção para dividir tar archives, possivelmente com compactação, mas os arquivos estão divididos de maneiras inúteis (talvez essa seja a melhor solução, se sim - por favor avise)

Como alternativa, dar será compactado em um arquivo por nível de arquivo, permitindo que uma opção -m especifique um tamanho mínimo. Isso seria ideal, mas para o grande número de arquivos, é muito demorado para compactar e arquivar a configuração. Os diretórios de nível mais baixo têm ~ 70MB de tamanho, então compactá-los seria útil (e eu suspeito que seja mais rápido, já que menos operações de compactação?)

Posso especificar a compactação dos subdiretórios individualmente, sem que arquivos individuais sejam compactados? Isso seria mais rápido se eu pudesse?

Uma implementação manual pode parecer:

for levelA in $(ls); do
cd levelA;
    for subdirectoryCase in $(ls); do
    cd subdirectoryCase;
        for subdirSmall in $(ls); do
        gzip subdirSmall;
        done
    cd ..;
    tar -cf $subdirectoryCase.tar $subdirectoryCase;
    gzip $subdirectoryCase.tar;
    done
cd ..;
tar -cf $levelA.tar $levelA;
gzip $levelA.tar;
done

tar -cf superStructure.tar levelA1.tar levelA2.tar levelA3.tar;
gzip superStructure.tar;

mas parece que isso pode ser micro gerenciamento a um nível horrível (mas isso ainda pode ser melhor, não sei?) dar poderia ser substituído por tar , e split poderia ser usado talvez antes do final gzip , assumindo que os arquivos gzip'd anteriores eram suficientemente pequenos (o que eles não serão, mas presumivelmente é possível lidar de maneira semelhante)

    
por chrisb2244 27.08.2014 / 03:56

0 respostas