Tôi muốn thư mục tar X không bao gồm cha mẹ của nó


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

Tuy nhiên, khi tôi giải nén, tôi cũng nhận được cha mẹ của nó

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

Các lệnh tar này thực hiện công việc này vì nó không bao gồm bất kỳ thứ gì khác trong cha mẹ của nó ( userví dụ các thư mục khác ).

Tôi muốn làm điều này theo chương trình, vì vậy việc thay đổi thư mục làm việc hiện tại thành /home/user/không thực sự là một lựa chọn. Có thể làm điều đó?

Câu trả lời:


17

Bạn có thể sử dụng -Ctùy chọn để thay đổi vào /home/userthư mục trước khi tarring hoặc sử dụng --strip-components 2khi giải nén.

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

1
+1 tuyệt vời .. Tôi chỉ tìm thấy công -Ctắc khi tôi đang xem qua trang người đàn ông , nhưng không thể hiểu ý nghĩa của nó .. nghe có vẻ giống như nó sẽ được sử dụng trong thời gian gần đây. Đã học được điều gì đó mới.
Levon

@Kevin Cảm ơn. Tùy chọn C hoạt động hoàn hảo. Cảm ơn bạn!
Người dùng007

2
Tôi không thể làm cho nó hoạt động như thế này. Theo đọc gnu.org/software/tar/manual/tar.html#SEC118 Tôi đã thành công với hình thức sau: tar cvf /var/lib/backup/sample.tar -C / home / user .project
Aivar

2

Tôi nghĩ rằng nếu bạn cdvào thư mục toplevel mà bạn muốn tạo tartệp, bạn không nên gặp vấn đề này. I E,

cdđến usertarlên .project.. bạn có thể chỉ định đích cho tệp tar trong /var/... như trước.

Hoặc có một lý do bạn không muốn / không cdthể user?


Đúng. Đó sẽ là một giải pháp. Cảm ơn. Nhưng tôi hy vọng có một cách tốt hơn? Tôi muốn đối phó với đồng minh lập trình này và tôi không muốn phát hành os.chdir(base_dir)mã của mình mọi lúc :) vì vậy sẽ thật tuyệt nếu có cách nào để thoát khỏi điều này. Cảm ơn
User007

@ User007 Ah .. ok, tôi hiểu rồi. Bạn có thể muốn cập nhật câu hỏi của bạn để bao gồm yêu cầu đó. Nhân tiện, id người dùng tuyệt vời :)
Levon

Cảm ơn. Đúng. Tôi vừa cập nhật câu hỏi của tôi. Ồ, đó là để che giấu danh tính của tôi ...
User007

1
@ User007 thích phần 007 .. và có vẻ như bạn cũng đang làm việc với Python (đó là một trong những mục yêu thích của tôi)
Levon

:) Đúng. Được rồi, bạn của chúng tôi Kevinđã giúp tôi ra lệnh đúng. Vì vậy, tôi sẽ cho anh ta đánh dấu. Nhưng tôi đã nâng đỡ bạn. Cảm ơn!
Người dùng007
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.