9

Я пытаюсь понять, как передать из команды что-то вроде gzip, cpio или tar.

Указанные команды относятся к системе ZFS. Я использую ZFS на Ubuntu Linux 10.04.3.

Команды, с которыми я работаю:

To create a snapshot;
zfs snapshot media/mypictures@20070607

To copy the snapshot to a directory;
zfs send media/mypictures@20070607 > ~/backups/20070607

Then I can also pipe into gzip
zfs send media/mypictures@20070607 | gzip > ~/backups/20070607.gz

Эти части я понимаю.

Но мой первый вопрос: что бы я сделал для передачи в tar + gzip?

Это?

zfs send media/mypictures@20070607 | tar czvf > ~/backups/20070607.tar.gz

И другой мой вопрос: как мне получить данные из архива или gzip?

Я должен использовать zfs recieve media/mypictures@20070607 < ~/backups/20070607

Так было бы так, если бы я использовал смолу?

zfs recieve media/mypictures@20070607 | tar xzvf < ~/backups/20070607.tar.gz

Любая идея?

2 ответа2

9

Опция -f указывает файл, иначе вывод отправляется на стандартный вывод. Итак, либо сбросьте перенаправление:

zfs send media/mypictures@20070607 | tar czvf ~/backups/20070607.tar.gz

Или опустите опцию f :

zfs send media/mypictures@20070607 | tar czv > ~/backups/20070607.tar.gz

Точно так же с непересекающимися.

9

tar ожидает получить список имен файлов в качестве аргументов командной строки. Насколько я знаю, его нельзя использовать для чтения анонимного конвейера (что он будет хранить как имя файла и метаданные файла?)

$ echo aaa | tar cv > f.tar
tar: Cowardly refusing to create an empty archive
Try `tar --help' for more information.

Если ваши данные представляют собой один логический элемент или поток, нет необходимости использовать что-то вроде tar, который используется для группировки набора отдельных файлов.

В противном случае вам придется сначала записать данные в файл, скопировать файл, а затем удалить файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .