Saya ingin tar direktori X tidak termasuk orang tuanya

9
tar cvf /var/lib/backup/sample.tar /home/user/.project

Namun, ketika saya mengekstrak, saya mendapatkan orang tuanya juga

/backup/
  - /home/
     - /user/
        - .project/

Perintah tar ini berfungsi karena tidak menyertakan apa pun di orang tuanya (folder lain di bawah usermisalnya).

Saya ingin melakukan ini secara terprogram, jadi mengubah direktori kerja saat ini menjadi /home/user/bukan pilihan. Apakah mungkin untuk melakukan itu?

User007
sumber

Jawaban:

17

Anda dapat menggunakan -Copsi untuk mengubah ke /home/userdirektori sebelum tarring atau menggunakan --strip-components 2ekstraksi.

tar cvfC /var/lib/backup/sample.tar /home/user .project
#                              Note the space ^
tar cvf /var/lib/backup/sample.tar /home/user/.project
tar Cxf /backup /var/lib/backup/sample.tar --strip-components 2
Kevin
sumber
1
+1 keren .. Saya baru saja menemukan -Csakelar ketika saya melihat-lihat halaman manual , tetapi tidak bisa memahaminya .. terdengar lebih seperti itu akan digunakan selama untar. Belajar sesuatu yang baru.
Levon
@ Kevin Terima kasih. Opsi C berfungsi dengan sempurna. Terima kasih!
User007
2
Saya tidak bisa membuatnya bekerja seperti ini. Menurut membaca gnu.org/software/tar/manual/tar.html#SEC118 saya berhasil dengan formulir berikut: tar cvf /var/lib/backup/sample.tar -C / home / user .project
Aivar
2

Saya pikir jika Anda cdke direktori tingkat atas yang ingin Anda buat tarfile, Anda seharusnya tidak memiliki masalah ini. Yaitu,

cdke userdan ke taratas .project.. Anda dapat menentukan tujuan untuk file tar di /var/... seperti sebelumnya.

Atau ada alasan Anda tidak ingin / tidak cdbisa user?

Levon
sumber
Iya. Itu akan menjadi salah satu solusi. Terima kasih. Tapi saya harap ada cara yang lebih baik? Saya ingin berurusan dengan sekutu terprogram ini, dan saya tidak ingin mengeluarkan os.chdir(base_dir)kode saya sepanjang waktu :) jadi akan lebih baik jika ada jalan keluar dari ini. Terima kasih
User007
@ User007 Ah .. ok, saya mengerti. Anda mungkin ingin memperbarui pertanyaan Anda untuk memasukkan persyaratan itu. Ngomong-ngomong, id pengguna yang bagus :)
Levon
Terima kasih. Iya. Saya baru saja memperbarui pertanyaan saya. Oh itu untuk menyembunyikan identitas saya ...
User007
1
@ User007 suka bagian 007 .. dan sepertinya Anda juga bekerja di Python (yang merupakan salah satu favorit saya)
Levon
:) Iya. Baiklah teman kami Kevinmembantu saya dengan perintah yang benar. Jadi saya akan memberinya tanda centang. Tapi saya mengangkat Anda. Terima kasih!
User007