awk
решение замечено на #bash (Freenode):
awk '!seen[$0]++' filename
Можно передать tar по каналу к команде разделения:
tar cvzf - dir/ | split --bytes=200MB - sda1.backup.tar.gz.
На некоторых *отклоняют системы (как OS X), можно получить следующую ошибку:
split: illegal option -- -
В этом случае попробуйте это (отметьте -b 200m
):
tar cvzf - dir/ | split -b 200m - sda1.backup.tar.gz.
Если Вы, оказывается, пытаетесь разделить файл для установки на FAT32 отформатированному использованию диска предел байта 4294967295. Например:
tar cvzf - /Applications/Install\ macOS\ Sierra.app/ | \
split -b 4294967295 - /Volumes/UNTITLED/install_macos_sierra.tgz.
serega@serega-sv:~$ tar -c -M --tape-length=1024 --file /tmp/pseudo-tape.tar --new-volume-script=/tmp/new-volume.sh --volno-file=/tmp/volno /tmp/stuff-to-archive
tar: Removing leading `/' from member names
moving /tmp/pseudo-tape.tar to /tmp/archive.1
moving /tmp/pseudo-tape.tar to /tmp/archive.2
moving /tmp/pseudo-tape.tar to /tmp/archive.3
Вам будет нужен сценарий для автоматизации, перемещающейся pseudo-tape.tar файл в новое имя:
serega@serega-sv:~$ cat /tmp/new-volume.sh
dir="/tmp"
base_name="pseudo-tape.tar"
next_volume_name=`echo -n "archive."; cat $dir/volno`
echo "moving $dir/$base_name to $dir/$next_volume_name"
mv "$dir/$base_name" "$dir/$next_volume_name"
-M --tape-length
. Однако этот ответ действительно игнорирует запрос OP на решение, которое использует gzip или bzip2 сжатие.
– sampablokuper
15.03.2018, 15:28
В macOS команда split
работает несколько иначе:
$ tar cvzf - foo | split -b 2500m - foo.tgz.
Просто добавлю: Поскольку максимально допустимый размер файла в vfat/fat32 равен 2^32 минус 1 (4294967295 байт), команда split с максимально допустимым размером файла в такой файловой системе выглядит так:
split -b4294967295 -d my_input_file my_output_file_splitted
В дополнение к своему собственному вкладу я недавно написал приложение, которое разбивает tar-архивы по границам файлов, которое может оказаться полезным для вас:
Вместо tar я бы использовал 7zip или какой-нибудь другой архиватор, который может нативно разбивать архив по границам файлов.
С помощью команды split у вас могут быть рубли на восстановление неисправных архивов, когда повреждена только одна часть серии.
7z и некоторые другие архивы дополнительно могут создавать сумму восстановления, добавленную к архивам, или даже иметь возможность добавить объем восстановления, который спасет вас, когда вы потеряете или повредите всю часть.
tar
разделенный архив Я нашел это лучшим решением по нескольким причинам:
tar
опции Эта команда создает фрагменты размером 2 ГБ без сжатия:
tar -cv --tape-length=2097000 --file=my_archive-{0..50}.tar file1 file2 dir3
Аналогично, эта команда создает фрагменты размером 1 ГБ со сжатием gzip :
.tar -czv --tape-length=2097000 --file=my_archive-{0..50}.tar.gz file1 file2 dir3
cat sda1.backup.tar.gz.* | tar xzvf -
задание? – Naftuli Kay 18.01.2013, 21:45split
значением по умолчанию определяет имена файлы так, чтобы при сортировке по ЛОКАЛЬЮ (который сделан оболочкой globbing) был в правильном порядке. – jordanm 18.01.2013, 21:47tar czf ...
безv
и слияниеcat backup.tar.gz.* | tar tar xzf -
безv
. Я не вижу преимущества подробного вывода здесьv
. – Léo Léopold Hertz 준영 09.07.2016, 15:15tar cvzf - Xcode.app/ | split -b 2000m - /Volumes/PH/xcode/xcode.tgz
(используемый отcd /Applications/
) Большое спасибо :) – ecth 08.12.2017, 14:06