Как мне создать файл tar.7z из командной строки?


21

Я хотел бы застегнуть домашнюю работу с прошлого года. Как мне распаковать и сжать всю папку из командной строки Ubuntu (у меня нет GUI).

Ответы:


25

Используйте следующую однострочную строку:

tar cf - <source folder> | 7z a -si <Destination archive>.tar.7z

Потенциальный источник: man 7z.
Уилф

9

Читать man tar. Это предлагает:

     -a, --auto-compress
       use archive suffix to determine the compression program
     -j, --bzip2
     --lzip
     --lzma
     --lzop
     -z, --gzip, --gunzip --ungzip
     -Z, --compress, --uncompress

Или, если ни один из них не подходит вам, и у вас есть программа сжатия, которая читает stdin, вы можете:

tar cf- $HOME | my_compression_program >/tmp/compressed.output

Обратите внимание, что я записываю выходные данные где-то кроме $HOME(резервное копирование в каталог, который вы резервируете, приводит к неограниченному росту файлов).

Или вы могли бы читать man 7z- похоже, что вы могли бы сделать

dir="directory to save"
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on /tmp/archive.7z $dir 

7

Это не очень хорошая идея сжатия непосредственно с 7z Spcially на Unix / Linux систем: 7z не сохраняет права доступа и или пользователей / групп информации . Итак: сначала смола, а потом сжимаем.

Как сообщается на вики-странице 7zip по адресу http://en.wikipedia.org/wiki/7z#Limitations :

Ограничения

Формат 7z не хранит разрешения файловой системы (например, разрешения владельца / группы UNIX или списки ACL NTFS) и, следовательно, может не подходить для целей резервного копирования / архивирования. Обходной путь в UNIX-подобных системах для этого заключается в преобразовании данных в поток битов tar перед сжатием в 7z.


5

Я бы предложил вам использовать:

tar cf - foldername | 7z a -si -m0=lzma2 -mx=3 foldername.tar.7z

для резкого увеличения ускорения.

Он имеет преимущество использования lzma2 ( -m0=lzma2) (который использует максимально доступное количество ядер в вашей системе и предустановку «Быстрое сжатие» ( -mx=3), которая в основном быстрая и достаточно хорошая. Обратите внимание, что LZMA2 использует не только все ядра для сжатия, но и для декомпрессия.


1
Наконец, с вашим ответом я нашел то, что искал: возможность использовать все процессоры для выполнения задачи.
Лонни Бест

0

Вы должны использовать tar -Jchf <Filename>.tar.xz <Files to compress>

-JИспользует алгоритм сжатия XZ, такой же , как 7zip

-cсоздает новый файл -hсохраняет симлинки -fустанавливает имя файла

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.