Bsdtar ve GNU tar arasındaki farklar nelerdir?


46

Ben her zaman GNU'yu kullandım tar. Ancak, bsdtardepolarında gemi gördüğüm tüm GNU / Linux dağıtımları . Hatta bazılarında IIRC'nin yüklü olduğunu bile gördüm. Arch GNU / Linux'un PKGBUILD'lerde gördüğüm gibi bunun bir parçası olarak basedevel(belki de baseemin değilim) istediğinden eminim.

Neden bsdtarGNU yerine kullanmak istersin tar? Avantajları nelerdir?

Diye sordum kişi olduğumu Not BSD ve GNU / Linux userland arasındaki temel farklar nelerdir? .


Yanıtlar:


29

Ubuntu bsdtaraslında birlikte verilen tar uygulamasıdır libarchive; ve bu klasikten ayrılmalıdır bsdtar. Bazı BSD çeşitleri libarchive, tar uygulamaları için, örneğin FreeBSD'yi kullanır.

GNUtardestekliyor diğer katran türevleri ve otomatik sıkıştırma algılama.

As visualication Ubuntu gelen cümle yapıştırılan, özgü orada birkaç şey vardır libarchive:

  1. libarchivetanım olarak bir kütüphanedir ve hem klasik bsdtarhem GNUtarde bu yönden farklıdır .
  2. libarchive bazı eski gizli GNU katran varyasyonlarını okuyamıyor, en kayda değer base64'deki bazı başlıkların kodlamasıydı, böylece katran dosyası 7 bitlik temiz ASCII olacaktı (bu 1.13.6-1.13.11 için geçerliydi ve 1.13.12'de değiştirildi. , bu kod sadece resmen 2 hafta boyunca katrandaydı)
  3. libarchive'ın bsdtar(örneğin ISO9660, cpio zip) olmayan katran dosyaları okuyacak, ama klasik bsdtar olmaz.

Şimdi libarchiveyoldan çekildiğimize göre, çoğunlukla klasik olarak desteklenenlere iniyor bsdtar.

Man sayfalarını burada görebilirsiniz:

Asıl sorunuzda, klasik için avantajların ne olduğunu sordunuz bsdtarve gerçekten de olduğundan emin değilim. Gerçekten önemli olan tek şey, tüm sistemlerde çalışması gereken kabuk komut dosyaları yazmaya çalışıyorsanız; geçtiğiniz şeyin tartüm değişkenlerde geçerli olduğundan emin olmanız gerekir .

GNUtar, libarchive'In bsdtar, klasik bsdtar, starve BusyBox' nin tarkesinlikle çoğu zaman içine edeceğiz o katran uygulamaları vardır, ama başkaları da (erken QNX örneğin) dışarı vardır eminim. libarchive/ GNUtar/ staren özellikli olanlardır, ancak birçok yönden uzun süredir orijinal standartlardan sapmışlardır (muhtemelen daha iyisi için).


15

BSDTAR vs TAR plus daha fazlası

İşte bir fayda!

Burada 5 konuya gireceğim (ve konudan uzaklaşıyorum, ancak istediğinizi de kapsayacak):

  1. bsdtar vs tar
  2. seyrek dosyalar vs değil
  3. btrfs ile kalın ve ince dosyalar
  4. btrfs olmadan kalın ve ince dosyalar / aylar
  5. kalın ve ince arasındaki fark ve sadece öğle yemeğinde nasıl kullanılmadığı

bsdtar , normal tar'dan sonra seyrek dosyaları daha iyi ele alır.

  • bsdtar tüm sıfırları alır ve üst üste meta veriyi alır.
  • tar aslında her sıfırı işler

* example: 20 tb seyrek dosya (biglun) boyunca 10 megabaytlık veri içeren bir 20 tb seyrek dosya (biglun) hayal edin ... şimdi bu seyrek bir dosya olduğundan, sürücüde sadece 10 megs alacaktır.

Seyrek bir dosya nasıl yapılır:

Seyrek Dosya - nasıl yapılır - algıla - her şey Seyrek dosyalar "ince" lunlar gibidir (bir lun için kullanıyorsanız). "kalın" lunlar farklı bir hikaye olurdu.

* konuya geri dön:

  • biglun'u toplamak, tar boyunca ay boyunca yayılan ~ 20tb sıfıra daha kötü sıfır ile birlikte 10 mega'nın tamamını geçmesini sağlayacak ... sanırım biraz zaman alacaktır ve tar dosyası oldukça büyük olacaktır. Ayrıca - ayıklamak - Hiç bir seyrek dosyanın tar dosyasının özü yapmadım, ama hoş olmayabilir; Burada yanlış olabilirim.

  • BigLun'ı başlatmak sadece 10 meg veriyi işlemden geçirecek ve ~ 20tb sıfır için küçük meta veri yapacaktır.

Yarar? Birçoğu; Sadece biraz yukarıda yazdım.

Bu cs vs rsync benzer

  • Ayrıca, dev bir seyrek dosyayı rsync, tar gibi davranacak
  • Eğer dev bir dosyayı cp ederseniz, otomatik olarak bsdtar gibi davranır (cp'nin davranışını sıfırın üzerine ya da sıfırın üzerine gitmeyecek şekilde değiştirebilirsiniz)

Şahsen ince aylar gibi seyrek dosyaları ve kalın aylar gibi normal dosyaları hayal etmeyi seviyorum.

Sıradaki konu, BTRFS'nin ince ve kalın aylar olduğu:

  • BTRFS gibi dosya sistemlerinde , ince aylar seyrek dosyalardır (wiki belgesinde olduğu gibi kısaltılmış şekilde yapın).

     truncate -s <size in kilobytes> filename
    

    ipucu: bsdtar ile yedekleme , cp ile kopyalama

  • thick luns + C özniteliğine sahip düzenli dosyalardır (+ C, böylece hiçbiri COW yapmaz, yazı üzerine kopyalar, böylece tüm yazılanlar esasen ayrıldıkları yere yapışır ve üzerine yazıldığında bu dosya için yeni yazarlar olmaz. veya siler - COW ve BTRFS'yi araştırın . Dosyayı kısaltmak yerine "fallocate -l" ile yapın

    fallocate -l <size in kilobytes> filename
    chattr +C filename
    

    ipucu: bsdtar veya tar ile yedekleme, rsync veya cp ile kopyalama

Bir sonraki konu, kalın ve daha ince olan EXT ince:

  • seyrek olan ince aylar

    truncate -s <size in kilobytes> filename
    

    ipucu: bsdtar ile yedekleme , cp ile kopyalama

  • thick luns + C özniteliğine sahip normal dosyalardır (+ C, hiçbiri COW yapmaz, yazı üzerine kopyalar, böylece tüm yazılanlar esasen ayrıldığı yere yapışır ve üzerine yazıldığında bu dosya için yeni bir yazı olmaz. veya siler - COW ve BTRFS'yi araştırın ). Dosyayı kısaltmak yerine "fallocate -l" ile yapın

    touch filename
    fallocate -l <size in kilobytes> filename
    

    ipucu: bsdtar veya tar ile yedekleme, rsync veya cp ile kopyalama

whats vs vs kalın bir dosya nedir

  • kalın lunlar / dosyalar, verilerini 0'dan ayrılan boyuta kadar doldurur, meta veriler 0'ların olduğu gibi davranır. Siz verileri doldururken, verileri doldurur.
  • kalın aylar / dosyalar: verilerini başlangıçta 0s veya neyse (tembel sıfır veya istekli sıfır) ile doldurun - bu set rezervasyonları (veya ZFS, tazminat çağırmayı sever)

VMWARE MAKALE BURADA, kalın luns / dosyalarla sıfır istekli tembel rakipleri tanımlar: https://communities.vmware.com/message/2199576

İpucu

Kalın ve ince'nin sadece lunlar için geçerli olmadığını, aynı zamanda dosyalar üzerinde, zfs dosya sistemlerinde de (paylaşımlar / hacimler / lunlar) olabileceğini ve eminim ki başka şeyler (sadece zfs'e bakınız) olabilir.


1
Güzel ve kapsamlı. Siteye hoşgeldiniz ...
eyoung100

1
- Herhangi bir katranla seyredin: Sadece -S'yi çoğu katran uygulamasına geçin, hepsi uzun süredir destekledi. - RSync ile seyrek: tekrar, geçmek - seyrek, işte. Herhangi bir seyrek algılamayı kullanmanın olumsuz yanı, takımın blokları daha fazla okuması gerektiğidir, bu da çok fazla CPU (özellikle sıfır / sıfır olmayan çalışmalarda) kullanılabilir.
robbat2,

Gnu tar, seyrek bayrağını desteklese bile, bsdtar kullanmak daha iyidir, çünkü bsdtar, işlemden geçirmeden seyrek delikleri atlamayı bilir (örneğin, yalnızca 1k veri içeren 1 TB seyrek bir dosyanız varsa, bsdtar, 1k veri işleme koyacaktır) Gnu tar
1TB'yi

13

Ubuntu paket tanımından ( http://packages.ubuntu.com/de/lucid/bsdtar )

"BSDtar programı önceki tar uygulamalarına göre bir takım avantajlara sahiptir:

  • Kütüphane. Çekirdek işlevsellik bir kütüphanede olduğundan pkg_add gibi başka araçlar tarafından da kullanılabilir.
  • Otomatik format algılama. Libarchive, arşivleri okurken sıkıştırmayı (none / gzip / bzip2) ve formatı (eski katran, ustar, gnutar, pax, cpio, iso9660, zip) otomatik olarak algılar. Bunu herhangi bir veri kaynağı için yapar.
  • Pax Değişim Biçimi Desteği. Bu, her girdiye isteğe bağlı genişletilmiş öznitelikler ekleyen eski "ustar" tar biçimine bir POSIX / SUSv3 uzantısıdır. GNU tar formatındaki her şeyi yapar, ancak daha iyisini yapar.
  • Dosya bayraklarını, ACL'leri, rastgele yol adlarını vb. İşler. Pax değişim formatı, kolayca genişletilebilir bir teknik kullanarak anahtar / değer niteliklerini destekler. Keyfi yol adları, grup adları, kullanıcı adları, dosya boyutları POSIX standardının bir parçasıdır; libarchive bunu dosya bayrakları, ACL'ler ve rastgele cihaz numaraları için destek vererek genişletir.
  • GNU katran desteği. Libarchive çoğu GNU katran arşivini okur. Eğer talep varsa, bu daha da geliştirilebilir. ”

1

Aşağıdakiler okumaya dayanır, deneyime değil - sadece Freebsd ile başlıyorum, bu yüzden neredeyse onunla hiçbir deneyimim yok (çoğunlukla Linux'tan geliyorum). Önemli bir şeyi kaçırdıysam özür dilerim (ve alçakgönüllü bir düzeltme isterim) ve burada söylediklerim çöp ...

El ile yapılan sayfaları okuduğumda (en son http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=1 adresinin üstündeki sayfa ) Freebsd katranı (-d, --diff , --compare) yeteneği. Freebsd damping / restore yazarlarının da böyle bir şey sağlamadığı görülüyor çünkü bu şaşırtıcı değil.

Gnu katranının tüm UFS meta verilerinin Freebsd katranının yapacağı söylendiği gibi dahil edilip edilmeyeceğinden emin değilim ve bu önemli bir konudur. Ama benim zevkime göre, çıktı dosyasının MD5 toplamını depolayana kadar ASLA bir dökümü tamamlayamayacağımı düşünebilirim ve daha sonra dökümü dosyasını sadece sözde dökümü yaptığım verilere göre karşılaştırdım. Çeşitli problemler, atılan verilerin diskte olduğundan farklı olmasına yol açabilir. (Yalnızca dosya değişiklikleri değil, disk hataları, bellek hataları, makine hataları ve diğerleri. Bunların hepsi gerçekten başıma geldi.)

Benim düşünceme göre, bu Gnu tar'ı şu ana kadar bir hisse senedi Freebsd sisteminde gerçek yedeklemeler oluşturmak için bulduğum tek seçenek haline getiriyor.

Başka türlü öğrenmeyi çok isterim, FWIW. Yerel yardımcı programları en azından bölüm klonlama ve sabit kurtarma yedekleri için kullanmayı tercih ediyorum. Ancak eğer bir çöplüğün doğruluğunu doğrulayamıyorsanız, yaratma zahmetinde bulunma noktasını göremiyorum.


1
  • bsdtar @archivesözdizimini kullanarak diğer arşivlerden gelen üyeleri okuyabilir ve tar yapabilir

  • GNU tar --deleteseçeneği var - yakın zamanda, arşivi bozabileceğini öğrendim.

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.