Введення та виведення дьогтю та gzip


11

Я намагаюся зрозуміти, як перейти з команди в щось на зразок 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

Будь-яка ідея?

Відповіді:


10

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

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

Якщо ваші дані є єдиним логічним елементом або потоком, не потрібно використовувати щось на зразок дьогтю, яке використовується для групування набору окремих файлів.

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


Дійсно? Я, хоча дьоготь - це просто ще одна форма стиснення. Так пропустити дьоготь і просто gzip?
ianc1215

3
Так, просто використовуйтеzfs send media/mypictures@20070607 | gzip -c > ~/backups/20070607.gz
RedGrittyBrick

2
Tar НЕ очікує переліку назв файлів, якщо ви не вказали -fпараметр (tar також приймає fбез "-").
drevicko

1
@drevicko: Контекст питання - це створення архіву tar. Перелік файлів, які я маю на увазі, - це список файлів (та / або каталогів), які слід включити до письмового архіву. Наприклад: cd /etc; TAPE=/tmp/rgb.tar tar c hosts passwdтам, де перелік файлівhosts passwd
RedGrittyBrick

2
@RedGrittyBrick, але контекст питання полягає у відстрілі з труби, тобто: немає списку файлів. Скажіть, що tar вимагає, що список файлів не відповідає дійсності. Проблема полягає в тому, що він очікує (одне) вихідне ім'я файлу, коли вказує ОП f, а він його не надає.
drevicko

10

-fПараметр визначає файл, в іншому випадку висновок йде на стандартний висновок. Отже, або відмініть перенаправлення:

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

Або відмініть fваріант:

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

Аналогічно з видаленням.


Це насправді працює? І те, echo "hello" | tar czvf foo.tar.gzі echo "hello" | tar czv > foo.tar.gzневдало для мене.
425nesp
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.