Tar ile farklı bir dizine nasıl çıkarırım?


18

Bu işe yaramaz:

tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive

Bunu yerinde çıkarmanın ve dosyaları taşımanın ötesinde ne yapacağım açık değil.

Yanıtlar:


28

Gönderen man tar:

     -C directory
         In c and r mode, this changes the directory before adding the
         following files.  In x mode, change directories after opening the
         archive but before extracting entries from the archive.

yani tar xC /foo/bar -f /tmp/foo.tar.gzişi yapmalı. (FreeBSD'de, ancak GNU tar bu açıdan temelde aynıdır, kılavuzundaki "Çalışma Dizini Değiştirme" konusuna bakın )


4
Bu davranışı tar'ın GNU olmayan sürümleriyle test etmeyi öneririm . Solaris el kitabı sayfasında bu seçenek yalnızca ekleme ve değiştirme işlemleriyle birlikte belirtilir. Merak ederek bir ekstre işlemi ile test ettim . Solaris'in katran vermedi değil herhangi bir hata veya uyarı verebilir ve = Geçerli klasördeki arşiv çıkarılan: - /
KTF

1
Ayrıca tar'ın AIX sürümünde çalışmaz: 'Arşivde dosya -C mevcut değil' - '-C' tarball oluşturmak için çalışır.
DarkHeart

Ana dizini yeni bir adla değiştirmek mümkün mü?
tofutim

9

başka bir yerde bir tar arşivini çıkarmak istiyorsanız, sadece hedef dizine cd atın ve orada açın:

 mkdir -p foo/bar
 cd foo/bar
 tar xzvf /tmp/foo.tar.gz

Kullandığınız komut foo/bar, arşivdeki dosyayı arar ve ayıklar.


9

Yapma:

(cd foo/bar ; tar xf /tmp/foo.tar.gz )

işi yapardı.

Temel olarak, ne yapar, bu alt kabukta yeni bir kabuk (parantez) oluşturmak dizini değiştirir foo/barve dosyayı açar .

İyi çalıştığından emin olmak için ;a işaretini değiştirebilirsiniz .&&cd


1
Vay canına bir kabuk başlatabilirsiniz gibi oldukça havalı! Bunu yapabileceğine dair hiçbir fikrim yoktu.
Kit Sunde

0
tar -xf ancd.tar.gz my/name/file

./filesonra tar dosyası ile birlikte dosya adı verebilirsiniz .

tar -xf ancd.tar.gz ./my/name/file

eğer çalışıyorsa, katran oluşturmuş olmanız demektir ./. tar içeriğini görmek için daha az komut kullanın.

less ...tar.file  

0

Benzer bir sorun gibi görünen şeylerle karşılaştım ve çözdüm.

Sorun, oluşturulan dosya yerine dosya oluşturma işlemindeydi.

A dizininde bir dosyayı tarlandırmaya ve aktarmaya çalışırken, tar komutundaki orijinal dosyanın yolunu sağladım

tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*

Çözmek için yapabileceğim şey

cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*

Tarball aktarılırken ve çıkarılırken, gerekli alt dizinler oluşturulur.

tar -xvf MyFile.tar

0

Ayıklamak istediğiniz dizini değiştirin

cd /u02/restore

/u01/backup.tar altındaki çıkarma dosyasının konumu

Aşağıdaki gibi ayıklayın:

cd /u02/restore
tar -xvf /u01/backup.tar

0

Komuta:

tar -xzvf foo.tar.gz -C /home/user/bar/

/home/user/barişlenen dosyaları yazdırırken "foo.tar.gz" girdi dosyasını dizine çıkarır .

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.