Я хочу запустить командную строку linux/ bash с помощью командной строки из Python, которая сначала записывает файлы, а затем разбивает файл tar. Команда будет выглядеть как-то в bash:
> tar -cvf - path_to_archive/* | split -b 20m -d -a 5 - "archive.tar.split"
Я знаю, что могу выполнить его с помощью подпроцесса, с помощью параметров shell = True и отправки всей команды в виде строки, например:
import subprocess
subprocess.call("tar -cvf - path_to_archive/* | split -b 20m -d -a 5 - 'archive.tar.split'", shell=True)
... но по соображениям безопасности я хотел бы найти способ пропустить часть "shell = True" (которая берет список строк, а не полную строку командной строки и не может обрабатывать канал char правильно). Есть ли решение для этого в Python? I.e., возможно ли каким-либо образом установить связанные каналы или какое-то другое решение?