Apakah Anda menggunakan jalur absolut atau relatif? Seharusnya relatif, selain itu terlihat benar. Berapa lama Anda membiarkannya berjalan, dan seberapa bagus sistem Anda? Setidaknya butuh beberapa menit menggunakan mesin yang cepat. Berpotensi satu jam atau lebih? Saya sedang menjalankan tes sekarang.
Kevin
Ya, itu selesai setelah ~ 1 jam, tapi jalur absolutnya salah, Anda benar.
Garrett Hall
5
Di Linux, Anda dapat menyaksikan sejauh mana arsip tersebut tarberada cat /proc/$(pidof tar)/fdinfo/0(adaptasikan perintah jika Anda memiliki lebih dari satu tarproses yang berjalan).
Gilles
Bagian penting juga tidak ada garis miring. Menggunakan folder/folder2/tidak akan berhasil.
Marki555
Jawaban:
145
tarmenyimpan jalur relatif secara default . GNU tar bahkan mengatakan demikian jika Anda mencoba untuk menyimpan jalur absolut:
tar -cf foo.tar /home/foo
tar:Removing leading `/' from member names
Jika Anda perlu mengekstrak folder tertentu, lihat apa yang ada di file tar:
tar -tvf foo.tar
Dan perhatikan nama file yang tepat. Dalam hal foo.tarfile saya , saya dapat mengekstraksi /home/foo/bardengan mengatakan:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Jadi tidak, cara Anda memposting bukanlah (harus) cara yang benar untuk melakukannya. Anda harus meninggalkan garis miring utama. Jika Anda ingin mensimulasikan jalur absolut, lakukan cd /terlebih dahulu dan pastikan Anda superuser. Juga, ini melakukan hal yang sama:
tar -C /-xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Ada alasan yang sangat jelas dan bagus mengapa tarmengubah jalur ke jalur relatif. Salah satunya adalah kemampuan untuk mengembalikan arsip di tempat selain sumber aslinya. Yang lainnya adalah keamanan. Anda dapat mengekstrak arsip, mengharapkan file-nya muncul di direktori kerja Anda saat ini, dan alih-alih menimpa file sistem (atau pekerjaan Anda sendiri) di tempat lain karena kesalahan.
Catatan: jika Anda menggunakan -Popsi, tarakan mengarsipkan jalur absolut. Jadi selalu membayar untuk memeriksa isi arsip besar sebelum diekstraksi.
--strip-components=Nsemoga bermanfaat bagi sebagian orang di sini.
Acumenus
2
dalam kasus saya itu perlu untuk menulis, ./foldername/bukan foldername, saya kira itu karena ketika saya membuat tar saya buat dengan itu tar -cvf santi.tar ./*dan ketika saya "mendaftar" tar inilah yang dikatakannyadrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
santiago arizti
1
Dan tentang .gz?
Peter Krauss
1
@PeterKrauss berubah -xvfmenjadi -xzvf(menambahkan -zopsi) dan jelas foo.tarke foo.tar.gzatau apa pun nama arsip Anda. Hal yang sama berlaku untuk -j(bz2) dan pada beberapa versi terbaru, -J(xz). Jika tidak, saluran pipa seperti zcat foo.tar.gz | tar -xvf - …juga berfungsi.
Alexios
Dan ingat, jika Anda bosan dengan semua output verbose selama ekstraksi lewati saja vsemua contoh. Misalnya, tar -tf foo.tardan tar -xf foo.tar ....
tar
beradacat /proc/$(pidof tar)/fdinfo/0
(adaptasikan perintah jika Anda memiliki lebih dari satutar
proses yang berjalan).folder/folder2/
tidak akan berhasil.Jawaban:
tar
menyimpan jalur relatif secara default . GNU tar bahkan mengatakan demikian jika Anda mencoba untuk menyimpan jalur absolut:Jika Anda perlu mengekstrak folder tertentu, lihat apa yang ada di file tar:
Dan perhatikan nama file yang tepat. Dalam hal
foo.tar
file saya , saya dapat mengekstraksi/home/foo/bar
dengan mengatakan:Jadi tidak, cara Anda memposting bukanlah (harus) cara yang benar untuk melakukannya. Anda harus meninggalkan garis miring utama. Jika Anda ingin mensimulasikan jalur absolut, lakukan
cd /
terlebih dahulu dan pastikan Anda superuser. Juga, ini melakukan hal yang sama:Ada alasan yang sangat jelas dan bagus mengapa
tar
mengubah jalur ke jalur relatif. Salah satunya adalah kemampuan untuk mengembalikan arsip di tempat selain sumber aslinya. Yang lainnya adalah keamanan. Anda dapat mengekstrak arsip, mengharapkan file-nya muncul di direktori kerja Anda saat ini, dan alih-alih menimpa file sistem (atau pekerjaan Anda sendiri) di tempat lain karena kesalahan.Catatan: jika Anda menggunakan
-P
opsi,tar
akan mengarsipkan jalur absolut. Jadi selalu membayar untuk memeriksa isi arsip besar sebelum diekstraksi.sumber
--strip-components=N
semoga bermanfaat bagi sebagian orang di sini../foldername/
bukanfoldername
, saya kira itu karena ketika saya membuat tar saya buat dengan itutar -cvf santi.tar ./*
dan ketika saya "mendaftar" tar inilah yang dikatakannyadrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
.gz
?-xvf
menjadi-xzvf
(menambahkan-z
opsi) dan jelasfoo.tar
kefoo.tar.gz
atau apa pun nama arsip Anda. Hal yang sama berlaku untuk-j
(bz2) dan pada beberapa versi terbaru,-J
(xz). Jika tidak, saluran pipa sepertizcat foo.tar.gz | tar -xvf - …
juga berfungsi.v
semua contoh. Misalnya,tar -tf foo.tar
dantar -xf foo.tar ...
.