Katran ve gzip içine ve dışına borulama


11

Bir komuttan gzip, cpio veya katran gibi bir şeye nasıl boru tutacağımı ele almaya çalışıyorum.

Söz konusu komutlar ZFS sistemine aittir. Ubuntu Linux 10.04.3 üzerinde ZFS kullanıyorum.

Birlikte çalıştığım komutlar;

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

Bu parçaları anlıyorum.

Ama ilk sorum, tar + gzip'e borsa yapmak için ne yapardım?

Bu?

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

Ve diğer sorum şu: verileri tarball veya gzip'ten nasıl alabilirim?

kullanmak zorundayım zfs recieve media/mypictures@20070607 < ~/backups/20070607

Katran kullanıyor olsaydım bu olur muydu?

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

Herhangi bir fikir?

Yanıtlar:


10

tarkomut satırı bağımsız değişkenleri olarak bir dosya adları listesi verilmesini bekler. Bildiğim kadarıyla, anonim bir boru hattını okumak için kullanılamaz (dosya adı ve dosya meta verileri olarak ne saklardı?)

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

Verileriniz tek bir mantıksal öğe veya akışsa, bir dizi ayrı dosyayı bir arada gruplamak için kullanılan tar gibi bir şey kullanmaya gerek yoktur.

Aksi takdirde, önce verileri bir dosyaya yazmanız, dosyayı tarlamanız ve ardından dosyayı silmeniz gerekir.


Gerçekten mi? Katran sadece başka bir sıkıştırma biçimiydi. Yani katranı atla ve sadece gzip?
ianc1215

3
Evet, sadece kullanzfs send media/mypictures@20070607 | gzip -c > ~/backups/20070607.gz
RedGrittyBrick

2
Tar -fseçeneği belirtmedikçe dosya adlarının bir listesini beklemez (tar f"-" olmadan da kabul eder ).
drevicko

1
@drevicko: Sorunun bağlamı bir katran arşivi oluşturmak. Demek istediğim dosya listesi, yazılı arşive dahil edilecek dosyaların (ve / veya dizinlerin) listesidir. Örneğin: cd /etc; TAPE=/tmp/rgb.tar tar c hosts passwddosya listesihosts passwd
RedGrittyBrick

2
@RedGrittyBrick ama sorunun içeriği bir kanaldan katran, yani: dosya listesi yok. Tar demek dosyaların bir listesini beklemek doğru değildir. Sorun, OP belirttiğinde (tek) çıktı dosyası adı beklemesi fve bunu sağlamadığıdır.
drevicko

10

-fSeçenek başka çıkış stdout'a gider, bir dosyayı belirtir. Yani, ya yeniden yönlendirmeyi bırakın:

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

Veya fseçeneği bırakın :

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

Benzer şekilde untarring ile.


Bu gerçekten işe yarıyor mu? Hem echo "hello" | tar czvf foo.tar.gzve echo "hello" | tar czv > foo.tar.gzbenim için başarısız.
425nesp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.