Это зависит от -локали, но нет румынского перевода для sudo
, извините. Их нужно написать.
https://www.sudo.ws/repos/sudo/file/tip/po
О работающей системе см. ls /usr/share/locale/*/LC_MESSAGES/sudo*
.
...have to decompress everything to extract any file... Right?.
нет, если вы избегаете смолы; поиск имен файлов и извлечение одного файла из архива легко (и быстро с.zip,.7z ). Пример;
> du -h a.*
223M a
115M a.tar.gz
75M a.7z
> 7z l a.7z | wc -l
2253
> ( time 7z l a.7z >/dev/null ) 2>&1 | grep user
user 0m0.014s
> ( time tar -ztf a.tar.gz >/dev/null ) 2>&1 | grep user
user 0m2.055s
...compress each file will be less optimal than aggregate all files in a tar file and then compress it... Right?
Верно.
Мой первый комментарий заключается в том, что 7z является многопоточным -многопоточным и индексированным, в то время как tar.xz не таков, поэтому существует огромная разница в производительности.
Но на самом деле я бы просто использовал файловую систему или устройство отображения для сжатия;
vdo create --name=vdo_volume --device=/dev/vda
Файловые системы, которые сжимаются;https://en.m.wikipedia.org/wiki/Category:Compression_file_systemsнапример
mount -t btrfs -o compress=lzo /dev/sdb /media/my_compressed_files
Обратите внимание, что обе эти операции могут быть выполнены на обратном -устройстве обратной связи, поэтому они могут действовать как целая файловая система в файле.
Существуют также архивные драйверы фьюзов, такие как fuse -7z -ng, которые будут быстрыми для извлечения данных, но производительность записи будет ужасной.
fuse-7z-ng files.7z /media/my_compressed_files
С помощью параметров tar
и -tvf
вы можете просмотреть содержимое любого архива, созданного с помощью tar, даже в сочетании с другими библиотеками, такими как gzip, bzip2 или xz.
tar -tf file.tar
tar -ztf file.tar.gz
tar -jtf file.tar.bz2
tar -Jtf file.tar.xz
Список содержимого позволяет вам конкретно указать файл, который вы хотите извлечь из архива, а затем вы можете использовать конкретный путь для извлечения файла.
Допустим, ваш путь home/user/old/photos/beach2012/bigbeachball.jpg
.
tar -xf file.tar home/user/old/photos/beach2012/bigbeachball.jpg
tar -zxf file.tar.gz home/user/old/photos/beach2012/bigbeachball.jpg
tar -jxf file.tar.bz2 home/user/old/photos/beach2012/bigbeachball.jpg
tar -Jxf file.tar.xz home/user/old/photos/beach2012/bigbeachball.jpg
Если ваш архивный файл не будет сильно меняться, (т.е. вы не будете слишком часто добавлять или удалять файлы из него ), вы всегда можете извлечь содержимое в текстовый файл. Наличие содержимого в текстовом файле, который вы можете искать с помощью grep, может упростить поиск файлов, чем необходимость обрабатывать архив каждый раз, когда вы хотите выполнить поиск.
Меня это всегда очень интересовало, вот несколько вариантов, над которыми я работал:
Squashfs позволяет архивировать и сжимать данные, а затем монтировать их как файловую систему, чтобы вы могли просматривать их, как если бы они были несжатыми:
mksquashfs some/directory dir.squashfs
mkdir mnt
sudo mount -t squashfs dir.squashfs mnt
Это работает только от root и только в Linux. Но squashfuse позволяет вам делать это как не -root в любой системе, поддерживающей FUSE -.
Кто-то уже упоминал pixz --, но это не просто распараллеленный xz. Он также добавляет к сжатому архиву файловый индекс , что значительно повышает эффективность небольших операций. Например:
# Listing files, and extracting a single file, using normal tar + xz
# So slow, not practical for interactive use.
$ time tar -tf 8gigs.tpxz > /dev/null
371.99s user 5.45s system 99% cpu 6:21.00 total
$ time tar -xf 8gigs.tpxz dir/somefile.txt
375.04s user 5.45s system 99% cpu 6:21.00 total
# Using pixz instead it's much faster!
$ time pixz -l < 8gigs.tpxz > /dev/null
0.01s user 0.01s system 38% cpu 0.035 total
$ time pixz -x dir/somefile.txt < 8gigs.tpxz | tar x
0.33s user 0.02s system 97% cpu 0.359 total
Я написал pixz и squashfuse --, потому что у меня были проблемы, подобные вашей.