Divisão rápida de lista de arquivos em blocos do mesmo tamanho (memória)

1

Veja o título. Suponha que eu tenha a seguinte lista de tamanhos de arquivos e parentes:

cat list_of_files.txt:

1243 001.txt
124  002.txt
4132 003.txt
3000 004.txt

Eu quero ser capaz de dividir em vários pedaços com o mesmo tamanho (no disco), ou seja, para N = 2 seria:

for N=2 

list_A.txt: 001.txt 002.txt 004.txt
list B.txt: 003.txt

N=3:

list_A.txt: 001.txt 002.txt
list_B.txt: 003.txt
list_C.txt: 004.tx

etc..

Qual seria a maneira mais eficiente de calcular esses blocos?

FYI: Eu quero ser capaz de paralelizar o rsync, se você tiver uma maneira melhor de fazer isso (rsyncing cada arquivo individualmente não vai fazer isso), eu realmente aprecio sugestões.

    
por memecs 27.03.2014 / 18:29

1 resposta

1

Esta é uma combinação clássica, chamada "problema de partição".

Você pode criar um programa em C para calcular isso, não se preocupe com o algoritmo, existem muitas bibliotecas disponíveis online. Acabei de encontrar este caso você precise executá-lo com frequência Terá que escrever o prog C para procurar em diretórios e pegar os tamanhos de arquivo.

Se você quiser usá-lo apenas uma vez ou de uma maneira mais confusa, coloque todos os nomes de arquivos e tamanhos em um nome de arquivo ALL_FILES, pegue os nomes de arquivos e tamanhos em uma matriz C e calcule as partições usando a biblioteca.

Não gosta de C? Muitas outras opções, basta procurar "problema de partição ur_fav_language "

    
por 27.03.2014 / 19:15