Большое спасибо за расширение горизонта моих познаний (увеличивающее количество ещё непонятого)!
Я, вообще, заинтересовался этим в плане доработки проекта чужого срипта, где планировалость перенаправлять вывод дампа MySQL напрямую в tar.
Код: Выделить всё
mysqldump --user=*** --password=*** --flush-logs $db | tar cyf > ${db}-`date "+(%d-%m-%Y)"`.sql.tbz
Вот здесь и возник затык. Ну ладно, спасибо, разобрался. Буду использовать просто bzip2:
Код: Выделить всё
mysqldump --user=*** --password=*** --flush-logs $db | bzip2 > ${db}-`date "+(%d-%m-%Y)"`.sql.bz2
Но просьба помочь до конца разобраться с "pipe".
Я попробовал поэкспериментировать на эту тему. Сделал такой скриптик:
Код: Выделить всё
#!/bin/sh
mkfifo ~/tar_pipe #Я проставил везде использование родительского каталога в путях для универсальности.
while tar -rf ~/foo.tar @- < ~/tar_pipe; do done &
#Как вариант, чтобы не печатать имена файлов в директории вручную, используем их передачу в tar через stdin.
cd /var/mysql_backups
ls | tar cf ~/tar_pipe -T -
rm ~/tar_pipe
exit 0
Как сделать правильное завершение этого скрипта? У меня в процессах остаются два висяка: /bin/sh ./test.sh
Вообще, как-то не получается сделать по описанию использования "pipe", например, на Википедии:
http://ru.wikipedia.org/wiki/%D0%98%D0% ... 0%B0%D0%BB
Не работает:
Код: Выделить всё
mkfifo arch_pipe
gzip -c < arch_pipe > arch.gz
cat txt.log > arch_pipe
Похоже, "pipe" должен быть всегда в фоне.
И ещё вопросик, насколько "pipe" оправдан по ресурсоёмкости? Стоит ли с ним связываться, или поискать другие варианты?