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.gz
nê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/bar
và sau đó gỡ bỏ tệp.
Bạn có thể thay đổi ;
bởi a &&
để chắc chắn cd
hoạt động tốt.
tar -xf ancd.tar.gz my/name/file
bạn có thể đặt tên tập tin với ./file
sau 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