Если вы определите 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
Вы можете попробовать аргумент - remove-files
для tar. Скажем, вы хотите сжать все в каталоге FOO, вы должны:
tar -czf FooCompressed.tar.gz --remove-files FOO
Объяснение аргументов:
-j
для BZIP2 или -J
для LZMA (xz) Обычно я никогда не создаю zip-файлы, так что я не эксперт, но похоже, что zip
по умолчанию просто добавляет файлы в архив, так что что-то вроде (untested - содержит команду rm
= потенциально опасно - Проверьте себя, прежде чем рисковать своими данными):
for f in $(ls --sort=size --reverse); do zip -9 archive.zip $f; rm $f; done
в каталоге, вероятно, может сделать это.
Если размер самого большого файла в каталоге меньше 300 ГБ (объем свободного пространства), проще всего сжимать файлы по отдельности, а не создавать архив; что-то вроде
find directory -type f \! -name '*.xz' -print 0 | xargs -0 xz -9
сжимает все несжатые файлы в каталоге
, используя xz
на уровне сжатия 9. Это будет заменять файлы по одному соответствующей сжатой версией, добавляя .xz
расширение (так foo.txt
становится foo.txt.xz
).
На самом деле это может работать, даже если самый большой файл больше доступного свободного пространства, если у вас достаточно файлов меньше доступного свободного пространства: начните с сжатия файлов меньшего размера, что постепенно освободит все больше и больше места. вверх, пока (надеюсь) у вас не будет достаточно свободного места для обработки самого большого файла.
что-то происходит на этапе 1 -3, и вы теряете все исходные файлы на этапе 4
Я успешно сжимаю и распаковываю с помощью следующих двух команд, это работает с большим количеством файлов в папке:
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