Возможное дублирование:
сжатие набора каталогов и создание сжатого tar-файла
В этом посте описывается, как сжать каждый файл отдельно в структуре каталогов. Однако мне нужно сделать что-то немного другое. Мне нужно создать один большой файл GZIP для всех файлов в определенном каталоге. Мне также нужно иметь возможность указать имя выходного файла для сжатого файла (например, files.gz) и перезаписать старый файл сжатого файла, если он уже существует.
gzip
по самой своей природе сжимает только один файл. Чтобы поместить несколько файлов в один файл для последующего архивирования, используйтеtar
.Ответы:
все в папке ToCompress пойдет на compressFileName
Изменить: После просмотра и комментариев я понял, что люди могут запутаться с compressFileName без расширения. Если вы хотите, вы можете использовать расширение .tar.gz (как предложено) с compressFileName
источник
compressFileName
так что он включает в себя.tar.gz
расширение, или вы будете сводить всех остальных с ума.tar -zcvf two-dirs.tar.gz dir-one dir-two
, создаст архив, содержащий две директории.*
чтобы сжать все в текущемtar -zcvf all.tar.gz *
Есть много методов сжатия, которые работают рекурсивно в командной строке, и хорошо знать, кто является конечной аудиторией.
то есть, если это нужно отправить кому-то, работающему с Windows, тогда лучше всего использовать zip:
для других пользователей Linux или сам по себе tar отлично
Нужно быть осторожным с tar и с тем, как все происходит / извлекается, например, если я запускаю
/ Главная / MyUserName
это создаст / home / myusername / etc / passwd
не уверены, что все версии tar делают это:
источник
Сообщение @amitchhajer работает для GNU tar. Если кто-то найдет этот пост и ему нужно, чтобы он работал в НЕ-
GNU
системе, он может сделать это:Чтобы расширить архив:
источник
pigz
это быстрее, поскольку он может лучше использовать процессор (многопоточная реализация zip).