Як тар / знімати вихід на льоту


27

Який ідіоматичний спосіб зробити наступне

  • дьоготь до стдуту
  • прочитати цей вихід тар з stdout та витягнути в якусь іншу папку.

Моє рішення таке tar --to-stdout .. | tar -C somefolder -xvf -

Але, можливо, існує ідіоматичніший спосіб зробити це.

Відповіді:


34

Цей же -f -варіант працює і для міркування.

tar -cf - something | tar -C somefolder -xvf -

GNU tar використовує stdio за замовчуванням:

tar -c something | tar -C somefolder -xv

rsync також популярний.

rsync -av something/ somefolder/

9

Просто додайте сюди ще один випадок використання. У мене була велика структура каталогів у системі, яка майже не мала місця на диску, і я хотів отримати файл tar.gz структури каталогів на іншій машині з великою кількістю місця.

tar -czf - big-dir | ssh user@host 'cat > /path/to/big-dir.tar.gz'

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


Netcat ідеально підходить для цього. (Кіт від одного господаря до іншого господаря).
Геннес

3
@Hennes: З відсутністю автентифікації, перевірки цілісності, шифрування даних, а також з необхідністю вручну запускати її з обох сторін для кожної окремої передачі (тобто 2 × робота), це звучить трохи менше, ніж ідеально
шанобливість

Більшу частину часу я gzip, перш ніж скинути його по мережі. Будь-які збої інтеграції, ймовірно, виявляться як декомпресійні помилки (хоча я ніколи не отримував жодних, коли використовував її). Щодо запуску двох програм: Aye, true.
Геннес

3
Можливо, це буде більше роботи, але для надсилання великого стисненого архіву через посилання під час роботи, залежної від часу, між машинами в захищеній локальній мережі або через VPN, пропуск через nc буде значно швидшим, ніж SSH (через мережу 1Gb, часто коефіцієнтом 2). Надішліть понад md5 суму архіву для перевірки цілісності.
Спулер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.