С точки зрения процесса cat
это просто копирование данных из стандартного ввода в стандартный вывод, и он ничего не знает о том, являются ли данные вообще, и в частности, являются ли они полными или нет. Таким образом, ответ на ваш вопрос нет это не стратегия «все или ничего».
Вы можете сделать что-то в 2 шага, что сделает его более надежным.
#/bin/bash
set -e
set -o pipefail
gzip -c -9 %p | ssh user@server "cat > backupPath.tmp"
ssh user@server "mv backupPath.tmp backupPath"
Обратите внимание, что %p
был скопирован из исходного сообщения, это не синтаксис оболочки.