Pertanyaan Bagaimana cara mengekstrak file ke direktori lain menggunakan perintah 'tar'?


saya pikir tar archive.tar /users/mylocation akan bekerja, tetapi tidak. Bagaimana saya bisa melakukannya?


581
2018-05-26 16:01


asal


Juga, -C, --directory DIR\n change to directory DIR lebih suka digambarkan sebagai change output directory to DIR (will fail if DIR doesn't exist). Terima kasih @Mich. Lihat juga jawaban @ Bryan_Larsen. - valid
@Ujjwal Sing: Memang, halaman manual tar tidak begitu membantu. Ini menggambarkan "-C DIR" sebagai "perubahan ke direktori DIR". Lebih buruk lagi: "tar -C mydir xf archive.tar" tidak berfungsi, sementara "tar xf archive.tar -C mydir" tidak berfungsi. - Pat Morin


Jawaban:


Untuk mengekstrak arsip ke direktori yang berbeda dari arus, gunakan -C, atau --directory, opsi tar, seperti pada

tar -xf archive.tar -C /target/directory

Perhatikan bahwa direktori target harus ada sebelum menjalankan perintah itu (dapat dibuat oleh mkdir /target/directory).

Membaca halaman manual (perintah: man tar) untuk opsi lain.


841
2018-05-26 16:16



Anda harus membuat direktori secara manual. - Jürgen Paul
Bisakah jalurnya dilucuti: misalkan, hanya mengambil file - zzapper
Jika itu file yang lebih besar, ketika Anda menjalankan perintah, yang Anda dapatkan adalah tidak ada output selama beberapa detik atau bahkan beberapa menit ketika sedang bekerja. Anda dapat memperbaiki ini dengan menambahkan -v bendera (mode verbose) yang mencantumkan nama setiap file saat mengekstraknya. - IQAndreas
@consultstan xkcd.com/1168 - Duncan X Simpson
Bukankah menakjubkan, setelah bertahun-tahun, dengan semua pilihan tar telah terakumulasi, masih belum ada pilihan untuk buat direktori output jika tidak ada? - EM0


Perhatikan bahwa jika tarball Anda sudah berisi nama direktori yang ingin Anda ubah, tambahkan --strip-components=1 pilihan:

tar xf archive.tar -C /target/directory --strip-components=1

215
2018-05-21 18:32



Terima kasih. Unduhan melalui wget / etc selalu memiliki direktori 'induk'. Ini adalah jawaban lengkap imo - atau harus dicatat dalam jawaban di atas. - bshea


Menggabungkan jawaban dan komentar sebelumnya:

Untuk sekadar mengekstrak konten dan membuat direktori target jika tidak ada:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

Untuk mengekstrak dan juga menghapus root (tingkat pertama) direktori di zip

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1

20
2018-06-27 19:29





Pilihan lain adalah menggunakan - satu tingkat atas. Ini secara otomatis akan membuat direktori berdasarkan nama file aslinya.

tar zxvf filename.tgz --one-top-level

Selain itu jika Anda mau, Anda dapat menentukan sendiri dan tar akan membuatnya secara otomatis.

tar zxvf filename.tgz --one-top-level=new_directory

6
2018-03-22 21:49





Dengan tar 1.29, kita bisa menambahkan nama direktori setelah nama file tar. Contohnya,

tar zxvf tar-file directory-name/

1
2018-06-29 23:00





Apa yang saya temukan menarik dalam kaitannya dengan ekstraksi adalah, bahwa itu tergantung bagaimana Anda membuat arsip, lihat contoh ini

cd /tmp
mkdir folder
touch folder/file.txt

saat kamu melakukan tar -zcvf folder.tar.gz folder semuanya sudah seperti yang diharapkan = ketika Anda menguraikannya sekarang, itu akan dibatalkan (folder akan dibuat, jika Anda menghapusnya) sebagai /tmp/folder/.

Namun, ketika Anda akan membuat tar sebagai tar -zcvf tmp-folder.tar.gz /tmp/folder dan Anda melepaskannya di folder / tmp, hasilnya akan /tmp/tmp/folder direktori ! Dalam hal demikian Anda harus membatalkannya ke / - tar -xf tmp-folder.tar.gz -C /


0
2017-09-01 22:25