Saya pikir tar archive.tar /users/mylocation
akan berhasil, tapi tidak. / bagaimana aku bisa melakukannya?
Untuk mengekstrak arsip ke direktori yang berbeda dari saat ini, 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
).
Baca halaman buku panduan (perintah: man tar
) untuk opsi lain.
Perhatikan bahwa jika tarball Anda sudah berisi nama direktori yang ingin Anda ubah, tambahkan --strip-components=1
opsi:
tar xf archive.tar -C /target/directory --strip-components=1
Menggabungkan jawaban dan komentar sebelumnya:
Untuk hanya mengekstrak isi dan membuat direktori target jika hilang:
mkdir -p /target/directory && tar xf archive.tar -C /target/directory
Untuk mengekstrak dan juga menghapus direktori root(tingkat pertama) di zip
mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
Pilihan lainnya adalah menggunakan -- one-top-level. Ini akan secara otomatis 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
Apa yang saya temukan menarik dalam kaitannya dengan ekstraksi adalah, Itu tergantung bagaimana Anda membuat arsip, lihat contoh ini
cd /tmpmkdir foldertouch folder/file.txt
ketika anda melakukan tar -zcvf folder.tar.gz folder
semuanya seperti yang diharapkan = ketika Anda untar sekarang akan untarred (folder akan membuat, jika Anda menghapusnya) sebagai /tmp/folder/
.
Tapi, ketika Anda akan membuat tar sebagai tar -zcvf tmp-folder.tar.gz /tmp/folder
dan Anda untar dalam folder / tmp, hasilnya akan /tmp/tmp/folder
direktori ! Dalam kasus seperti itu Anda harus untar untuk / - tar -xf tmp-folder.tar.gz -C /
@ Ujjwal Sing: memang, halaman manual tar tidak begitu membantu. Ini menggambarkan “- C DIR “sebagai” ubah ke direktori DIR”. Lebih buruk lagi: "tar-C mydir XF arsip.tar “tidak bekerja, sementara” tar XF arsip.tar-C mydir " tidak.
Juga '- C, --direktori DIR\n ubah ke direktori DIR ' sebaiknya digambarkan sebagai
ubah direktori keluaran ke DIR (akan gagal jika DIR tidak ada)’. Terima Kasih @ Mich. Lihat juga jawaban @ Bryan_Larsen.
@ PatMorin agar adil, setelah Anda memahami argumen yang memanggil konvensi yang Anda gunakan, itu masuk akal. Anda juga dapat melakukan tar XFC arsip.tar mydir 'atau' tar-C mydir-XF arsip.tar
. Ini hanya mencampur bendera gaya tradisional dan gaya GNU yang merusak banyak hal, seperti… jujur jenis yang diharapkan. Bendera tradisional dilewatkan semua sebagai satu gumpalan sebagai argumen pertama. Anda tidak dapat mengharapkan mereka untuk bekerja jika mereka bukan yang pertama. (Maksud saya, ya, itu mungkin untuk menafsirkannya-maksud saya adalah itu akan berada di atas dan di luar, bukan standar)