Làm cách nào để sử dụng lệnh Unix tar với filepath ẩn?


9

Tôi đang sử dụng tar -xvflệnh và nó đang đi theo đường dẫn rõ ràng. Tuy nhiên, con đường đã đầy.
Thí dụ:

tar -xvf 13.2.tar

Nó đang đi theo đường dẫn của /mntthư mục. Các /thư mục đã đầy.

Làm thế nào tôi có thể tar các tập tin với đường dẫn ngầm?


Bạn nên giải thích rõ ràng chính xác những gì đang diễn ra, vì cách đặt câu hỏi hiện tại của bạn làm cho ngay cả quả cầu pha lê phức tạp nhất cũng có vẻ hơi mơ hồ.

Câu trả lời:


2

Thường tarcần --absolute-nameshoặc --absolute-pathstùy chọn để giữ lại phần gốc '/'trong khi tạo một kho lưu trữ. Ngay cả khi bạn buộc nó theo cách đó, trích xuất cũng bỏ qua hàng đầu '/'.


Tuy nhiên, nếu bạn có một kho lưu trữ với hàng đầu '/'và bạn không bỏ qua nó trong khi giải nén, câu trả lời của NoahD sẽ hoạt động ở dạng này,

pax -r -s ',/mnt,/new/path,' -v -f 13.2.tar

Tôi nghĩ rằng paxkhông xử lý các tệp nén, vì vậy bạn sẽ cần phải xử lý sau khi giải nén pax.
Điều đó sẽ diễn ra như thế này (giả sử bạn có một kho lưu trữ được nén)

gunzip -c 13.2.tar.gz | pax -r -s ',/mnt,/new/path,' -v

Tôi tìm thấy trang wiki này trên Google ngay bây giờ.


2

Sự khác biệt giữa việc sử dụng canonical (còn gọi là rõ ràng) và tương đối (cái mà bạn có thể gọi là ẩn) là bạn có sử dụng /từ đầu không.

Ví dụ: nếu thư mục làm việc hiện tại là /usr/home/bob, các lệnh sau có chính xác hiệu ứng tương tự

tar -xvf foo.tar *
tar -xvf ./foo.tar *
tar -xvf ./foo.tar ./*
tar -xvf /usr/home/bob/foo.tar *
tar -xvf /usr/home/bob/foo.tar ./*
tar -xvf /usr/home/bob/foo.tar / usr / home / bob / *

Nhưng tôi nghi ngờ rằng đây không thực sự là câu hỏi của bạn. Có vẻ như bạn cần xác định mức sử dụng đĩa và xác định vị trí thư mục chưa đầy. Điều này có thể được thực hiện với dflệnh.

df -k # space on disk in kilobytes
df -m # as above, but in meg
df -g # as above, but in gig

Và bạn có thể sử dụng mountđể hiển thị cho bạn hệ thống tệp nào được gắn tại thiết bị nào.


0

Để tạo một tập tin tar với một đường dẫn tương đối,

cd /parent/of/dir/to/tar
tar cvf subdir.tar subdir

Để giải nén tar vào một thư mục cụ thể khác với thư mục làm việc hiện tại, hãy sử dụng công tắc -C (chữ hoa C).

Nếu bạn muốn gỡ bỏ một tệp có tên đường dẫn tuyệt đối trong đó đến một điểm không phải là root, bạn có thể cần phải xử lý chroot(1).


0

Tôi tin rằng pax sẽ làm điều đó

pax -r -s, / mnt, / gooddir, -f 13.2.tar

Nó sẽ cho phép bạn thay thế trong một thư mục gốc mới.

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.