Комментарии 3
Расскажите, а зачем вообще делать бэкапы из Stdin?
Например если делаешь бэкап с другого сервера по SSH (если нет возможности развернуть restic на целевом сервере). Да, безусловно можно сначала выкачать бэкап и положить в локальный файл, а уже потом на него натравить restic - но это дополнительное время.
А вот про то, что restic не оптимально восстанавливает на stdout - это полезное замечание, я не знал. Я правда restic вообще не использовал с stdin/stdout - у меня нет проблем положить один бинарник на все сервера, где нужно делать бэкап, но замечание интересное...
Это имеет смысл когда данные для бэкапа представляют собой не обычные файлы, а поток данных, который необходимо откуда-то выгрузить. Например: дампы баз данных, снапшоты блочных устройств и виртуальных машин, которые можно формировать и выгружать в систему бэкапирования на лету.
Конечно их можно предварительно выгрузить в виде фалов в файловую систему, а затем забэкапить их, но этот подход имеет определённые недостатки. Например для создания бэкапов из файлов вам понадобится свободное место во временной директории для сохранения этих файлов, а размер таких данных может спокойно достигать до десятков и сотен гигабайт. Кроме того при регулярности создания таких бэкапов расходуется ресурс накопителей на запись. Когда в случае создания бэкапа на лету, restic дедупдицирует одинаковые участки и даже не передаёт их по сети.
Таким образом создание бэкапов из Stdin получается быстрее и эффективнее, так как не расходует место на файловой системе и ресурсы накопителей, сводя операции записи к минимуму.
Restic: эффективное резервное копирование из Stdin