Bagaimana tar / untar output dengan cepat

27

Apa cara idiomatis untuk melakukan hal berikut

  • tar ke stdout
  • baca output tar ini dari stdout dan ekstrak ke folder lain.

Solusi saya adalah tar --to-stdout .. | tar -C somefolder -xvf -

Tetapi mungkin ada cara yang lebih idiomatis untuk melakukannya.

shabunc
sumber

Jawaban:

34

-f -Opsi yang sama juga berfungsi untuk tarring.

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

Tar GNU menggunakan stdio secara default:

tar -c something | tar -C somefolder -xv

rsync juga populer.

rsync -av something/ somefolder/
grawity
sumber
9

Cukup tambahkan use case lain di sini. Saya memiliki struktur direktori besar pada sistem yang hampir kehabisan ruang disk dan ingin berakhir dengan file tar.gz dari struktur direktori pada komputer lain dengan banyak ruang.

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

Ini menghemat overhead jaringan dan berarti Anda tidak perlu tar di sisi lain jika Anda ingin menggunakan rsync sebagai gantinya.

quickshiftin
sumber
Netcat sangat cocok untuk ini. (Kucing dari satu host ke host lain).
Hennes
3
@ Hennes: Dengan kurangnya otentikasi, pemeriksaan integritas, enkripsi data, serta harus memulainya secara manual di kedua sisi untuk setiap transfer individu (yaitu 2 × pekerjaan), kedengarannya sedikit kurang sempurna
grawity
Sebagian besar waktu saya gzip sebelum membuangnya ke jaringan. Setiap kegagalan integret cenderung muncul sebagai kesalahan dekompresi (meskipun saya tidak pernah mendapatkannya ketika saya menggunakannya). Untuk memulai dua program: Ya, benar.
Hennes
3
Mungkin lebih banyak pekerjaan, tetapi untuk mengirim arsip terkompresi besar melalui tautan selama operasi peka waktu antara mesin dalam jaringan lokal aman atau melalui VPN, pemipaan melalui nc akan secara signifikan lebih cepat daripada SSH (melalui jaringan 1Gb, seringkali dengan faktor 2). Kirim lebih dari jumlah md5 arsip untuk pemeriksaan integritas.
Pengumpul informasi