1

Смотрите заголовок. Предположим, у меня есть следующий список размеров файлов и родственников:

cat list_of_files.txt:

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

Я хочу иметь возможность разбить на несколько кусков, имеющих одинаковый размер (на диске), т. Е. Для N = 2 это будет:

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..

Что было бы наиболее эффективным способом вычисления этих кусков?

К вашему сведению: я хочу иметь возможность распараллелить rsync, если у вас есть какой-то лучший способ сделать это (rsyncing каждого файла по отдельности не будет делать), я был бы очень признателен за предложения.

1 ответ1

1

Это классический комбинаторный, он называется "проблема разбиения".

Вы можете создать C-программу для вычисления этого, не беспокойтесь об алгоритме, есть много библиотек, доступных онлайн. Я только что нашел это, на случай, если вам нужно будет часто его запускать, вам придется написать прогу C для поиска в каталогах и получить размеры файлов.

Если вы хотите использовать его только один раз или более беспорядочно, вы можете поместить все имена файлов и размеры в имя файла ALL_FILES, получить имена файлов и размеры в массиве C и вычислить разделы с помощью библиотеки.

Не нравится C? Множество других опций, просто поиск "проблема с разделами ur_fav_language "

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .