Разбить большой файл на части и удалить исходный?

Да, это так.

Вы можете попробовать другие форматы сжатия, предлагаемые tar. На моем Linux-боксе это разнообразие предлагает GNU tar. Тем не менее, если gzip -9достигает только 29 ГБ -> 26 ГБ, маловероятно, что другой формат сжатия достигнет желаемых 29 ГБ -> 10 ГБ, которые вы ищете.

$ tar --help|grep -A16 Compression
 Compression options:

  -a, --auto-compress        use archive suffix to determine the compression
                             program
  -I, --use-compress-program=PROG
                             filter through PROG (must accept -d)
  -j, --bzip2                filter the archive through bzip2
  -J, --xz                   filter the archive through xz
      --lzip                 filter the archive through lzip
      --lzma                 filter the archive through lzma
      --lzop
      --no-auto-compress     do not use archive suffix to determine the
                             compression program
  -z, --gzip, --gunzip, --ungzip   filter the archive through gzip
  -Z, --compress, --uncompress   filter the archive through compress

 Local file selection:
$
2
12.01.2021, 19:27
1 ответ

В файловой системе только~1,03 ГБсвободного -дискового -места;
разделение файла~9.3Gразмера.

мы собираемся разбить этот файл на 10 небольших файлов размером примерно1Gкаждый.

for i in {1..10}; do
    tail -c 1G bigfile >split_file_$i && truncate -s -1G bigfile;
done

это почти использует1Gсвободного -дискового пространства из~1.03Gдоступного и только~30Mостается каждый раз! (Я в тестовой среде ); конечно, вам нужно настроить размер разделения в соответствии с доступным свободным -дисковым -пространством, ине используйте все это доступное пространство! , используйте, например, до -до 80%.


воссоединиться обратно в один файл:

for file in split_file_{10..1}; do
    cat "$file" >>bigfile_joined && rm "$file"; 
done
2
18.03.2021, 22:37

Теги

Похожие вопросы