Câu trả lời:
Từ man tar:
-C directory
In c and r mode, this changes the directory before adding the
following files. In x mode, change directories after opening the
archive but before extracting entries from the archive.
tức là tar xC /foo/bar -f /tmp/foo.tar.gznên làm công việc (trên FreeBSD, nhưng về cơ bản GNU tar về mặt này, hãy xem "Thay đổi thư mục làm việc" trong hướng dẫn sử dụng )
Đang làm:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
sẽ làm công việc
Về cơ bản, những gì đang làm là sinh ra một shell mới (dấu ngoặc đơn), trong phần con này, thay đổi thư mục thành foo/barvà sau đó gỡ bỏ tệp.
Bạn có thể thay đổi ;bởi a &&để chắc chắn cdhoạt động tốt.
tar -xf ancd.tar.gz my/name/file
bạn có thể đặt tên tập tin với ./filesau tập tin tar.
tar -xf ancd.tar.gz ./my/name/file
nếu nó hoạt động có nghĩa là bạn đã tạo ra một tar với ./. sử dụng lệnh ít hơn để xem nội dung tar.
less ...tar.file
Tôi gặp phải vấn đề tương tự và đã giải quyết nó.
Vấn đề là trong việc tạo tập tin chứ không phải tập tin đã tạo.
Khi cố gắng tar lên và chuyển một tập tin trong thư mục A, tôi đã cung cấp đường dẫn đến tập tin gốc trong lệnh tar
tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*
Những gì tôi đã có thể làm để giải quyết là
cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*
Khi chuyển và trích xuất tarball, các thư mục con cần thiết được tạo.
tar -xvf MyFile.tar