Вы превысили максимальную длину командной строки. Командная строка имеет конечную длину, которую вы можете проверить с помощью команды getconf ARG_MAX
. Когда вы запускаете команду оболочки с шаблоном глобуса, например *
в каталоге, содержащем огромное количество файлов, командная строка переполняется, и вы получите сообщение об ошибке "Список аргументов слишком длинный", так что это не проблема tar
. Имейте это в виду, когда вы используете другие команды с шаблонами глобусов, которые применяются к огромному количеству файлов.
Чтобы решить вашу проблему, вы можете использовать программу find
которая будет "ходить"
через каталог и подачу tar
.
Для архивирования всех файлов в виде одного сжатого архива tar вы можете использовать:
find . -name "*.xml" -print | tar -czvf xml.tgz -T -
Чтобы архивировать все файлы по отдельности в виде сжатых tar-архивов (не совсем понятно, зачем нужно tar'ed, если это один файл, но по вашему желанию), используйте
find . -name "*.xml" -exec tar -czvf '{}'.tgz '{}' \;
Для архивирования всех файлов по отдельности в виде архивов gzip используйте:
find . -name "*.xml" -exec gzip '{}' \;
Будьте осторожны, команда выше удалит оригинальные файлы (!!!)
Для архивирования всех файлов по отдельности в виде zip-архивов используйте:
find . -name "*.xml" -exec zip '{}'.zip '{}' \;
PS я добавил тоже пропустил (?) возможность сжать архив tar.