Сжать и удалить исходный каталог с ограниченным объемом памяти

Если вы определите Bar до включения Foo в свой Makefile , тогда Bar доступен в Foo .

Например. В каждом из моих Makefile для пакетов Python (первые две строки, конечно, различаются в зависимости от Makefile):

UTILNAME:=yaml
PKGNAME:=ruamel.yaml
VERSION:=$(shell python setup.py --version)

include ~/.config/ruamel_util_new/Makefile.inc

И в Makefile.inc у меня есть общий подпрограммы, которые, помимо прочего, теперь создают файл распределения:

DIST:=dist/$(PKGNAME)-$(VERSION).tar.gz
WHL:=dist/$(PKGNAME)-$(VERSION)-py*-any.whl

$(DIST): $(SRC)
        make check
        python setup.py sdist
5
02.09.2017, 04:39
5 ответов

Вы можете попробовать аргумент - remove-files для tar. Скажем, вы хотите сжать все в каталоге FOO, вы должны: tar -czf FooCompressed.tar.gz --remove-files FOO

Объяснение аргументов:

  • c: создать TAR
  • z: сжатие с использованием GZIP, вы можете переключиться на -j для BZIP2 или -J для LZMA (xz)
  • f: вывод в файл вместо STDOUT
  • remove-files: не требует пояснений
11
27.01.2020, 20:41

Обычно я никогда не создаю zip-файлы, так что я не эксперт, но похоже, что zip по умолчанию просто добавляет файлы в архив, так что что-то вроде (untested - содержит команду rm = потенциально опасно - Проверьте себя, прежде чем рисковать своими данными): for f in $(ls --sort=size --reverse); do zip -9 archive.zip $f; rm $f; done в каталоге, вероятно, может сделать это.

0
27.01.2020, 20:41

Если размер самого большого файла в каталоге меньше 300 ГБ (объем свободного пространства), проще всего сжимать файлы по отдельности, а не создавать архив; что-то вроде

find directory -type f \! -name '*.xz' -print 0 | xargs -0 xz -9

сжимает все несжатые файлы в каталоге , используя xz на уровне сжатия 9. Это будет заменять файлы по одному соответствующей сжатой версией, добавляя .xz расширение (так foo.txt становится foo.txt.xz ).

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

1
27.01.2020, 20:41
  • c :создать TAR
  • z :сжать с помощью GZIP, вы можете переключиться на -j для BZIP2 или -J для LZMA (xz)
  • f :вывод в файл вместо STDOUT
  • удалить -файлы :не требует пояснений

что-то происходит на этапе 1 -3, и вы теряете все исходные файлы на этапе 4

0
27.01.2020, 20:41

Я успешно сжимаю и распаковываю с помощью следующих двух команд, это работает с большим количеством файлов в папке:

for f in $(find /backup/test/ -type f  \! -name '*.xz'  -printf "%f\n"); do xz -9 $f; done

for f in $(find /backup/test/ -type f  -name '*.xz'  -printf "%f\n"); do unxz $f; done
0
24.09.2021, 02:52

Теги

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