Как оказалось, сотрудник написал почти идентичную команду в одном из наших сценариев. Потратив некоторое время на размышления, я спросил, почему он использовал это, а не cp
. Насколько я помню, он ответил, что cp
работает медленно при копировании из одной файловой системы в другую.
Правдиво это или нет, потребует больше испытаний, чем я собираюсь потратить на этот вопрос, но это имеет определенный смысл. Первый процесс tar
читает с исходного устройства как можно быстрее, ожидая только чтения этого устройства. Между тем, второй процесс tar
читает из своего канала ввода и пишет как можно быстрее. Возможно, придется ждать ввода, но если запись на целевом устройстве выполняется медленнее, чем на исходном устройстве, он будет ожидать только на целевом устройстве. Одной команде cp
придется ждать как на исходном, так и на целевом устройствах.
С другой стороны, современные операционные системы довольно хорошо справляются с предварительным кэшированием операций ввода-вывода. Вполне возможно, что cp
будет тратить большую часть своего времени на ожидание записи и считывания из памяти, а не самого устройства. Похоже, что для выбора нужно действительно надежные данные, используя две команды tar
, а не более простую команду cp
.