
Мне нужно сохранить большое количество файлов (> 100 000) в архиве tar, и я столкнулся с ошибкой:/bin/sh: /bin/tar: невозможно выполнить [список аргументов слишком длинный].
Есть ли ограничения в UNIX Solaris tar или GNU tar? Или это проблема ZFS? Я использую Solaris 11.3 с ZFS.
решение1
Это не ограничение tar. Вы превышаете максимальный размер аргументов, которые можно передать программе. Если список имен файлов доступен в файле, то вы можете использовать -T
опцию GNU tar:
tar -c -f output.tar -T filelist.txt
Tar также может получить список файлов из стандартного ввода, используя -
в качестве имени файла. Например, если вы хотите создать архив, содержащий все файлы и подкаталоги mydir
, вы можете передать вывод find
tar:
find mydir | tar -c -f output.tar -T -
решение2
Как уже говорили другие, проблема (вероятно) в длине команды, а не в размере архива. Вы должны быть в состоянии сделать
смола срtarfileфайл001 файл002 … файл100 тар уфtarfileфайл101 файл102 … файл200 тар уфtarfileфайл201 файл202 … файл300 ︙В качестве альтернативы, сделайте
смола срtarfileфайл001создать архив, а затем
смола срtarfile файл002 … файл100 тар уфtarfileфайл101 файл102 … файл200 тар уфtarfileфайл201 файл202 … файл300 ︙(возможно с
xargs
) для добавления к нему.