2010-12-01 5 views
3

Я хочу получить выход программы, которая записывает в stdout и fifo в fd = 3. Здесь была моя первая попытка:Как tar a fifo


#!/bin/bash 

#Create fd=3 
exec 3> >(cat) 

#Start the tar 
tar -cvzf ha.tgz /dev/fd/1 /dev/fd/3 

#Write data 
echo stdout 
echo 'fd=3'>&3 

#close 
exec 3>&- 

Он создал ha.tgz и ее содержимое/DEV/FD/1 и/DEV/FD/3. Однако, когда я извлекаю файлы, он в основном создает символические ссылки на/dev/fd/1 и/dev/fd/3 (что не работает). Я надеялся, что файлы будут просто обычными файлами, чей контент будет тем, что я написал в скрипте. Есть ли способ сделать это?

+0

Похоже, вопрос для сервера Fault или суперпользователя: http://serverfault.com/ или http://superuser.com/ – Orbling 2010-12-01 17:08:36

+0

Если вы не поставляйте файл (ы) в tar, только поток данных, что вы ожидаете получить на другой стороне, когда вы его отмените? – 2010-12-01 17:19:24

ответ

3

Есть ли способ сделать это?

№ записей в разделе/​​dev не являются реальными файлами, они являются только файловыми интерфейсами для драйверов устройств. Если вы хотите использовать обычные файлы, используйте обычные файлы.

1

Просто пропустите содержимое пятна в gzip и в файл.

2

С молнией, он должен работать так:

zip -FI MyZipFile /dev/fd/1 /dev/fd/3