Tôi có lệnh sau đây trong một phần của một kịch bản shell sao lưu:Tar một thư mục, nhưng không lưu trữ đầy đủ đường dẫn tuyệt đối trong kho lưu trữ
tar -cjf site1.bz2 /var/www/site1/
Khi tôi liệt kê các nội dung của các kho lưu trữ, tôi nhận được :
tar -tf site1.bz2
var/www/site1/style.css
var/www/site1/index.html
var/www/site1/page2.html
var/www/site1/page3.html
var/www/site1/images/img1.png
var/www/site1/images/img2.png
var/www/site1/subdir/index.html
Nhưng tôi muốn để loại bỏ các phần /var/www/site1
từ tên thư mục và tập tin trong kho lưu trữ, để đơn giản hóa khai thác và tránh vô dụng cấu trúc thư mục không đổi. Không bao giờ biết, trong trường hợp tôi sẽ trích xuất các trang web được sao lưu ở nơi dữ liệu web không được lưu trữ dưới /var/www
.
Đối với ví dụ trên, tôi muốn có:
tar -tf site1.bz2
style.css
index.html
page2.html
page3.html
images/img1.png
images/img2.png
subdir/index.html
Vì vậy, mà khi tôi giải nén, các file được giải nén trong thư mục hiện và tôi không cần phải di chuyển các file trích xuất sau đó, và vì vậy các cấu trúc thư mục con được giữ nguyên.
Đã có nhiều câu hỏi về tar và sao lưu trong stackoverflow
và tại các địa điểm khác trên web, nhưng hầu hết trong số họ yêu cầu thả toàn bộ cấu trúc thư mục con (làm phẳng) hoặc chỉ thêm hoặc xóa cấu trúc ban đầu/trong tên (Tôi không biết những gì nó thay đổi chính xác khi giải nén), nhưng không có nhiều hơn nữa.
Sau khi đọc một số trong những giải pháp tìm thấy ở đây và ở đó cũng như hướng dẫn, tôi đã cố gắng:
tar -cjf site1.bz2 -C . /var/www/site1/
tar -cjf site1.bz2 -C//var/www/site1/
tar -cjf site1.bz2 -C /var/www/site1/ /var/www/site1/
tar -cjf site1.bz2 --strip-components=3 /var/www/site1/
Nhưng không ai trong số họ làm việc theo cách tôi muốn. Một số không làm gì cả, một số khác không lưu trữ các thư mục con nữa. Đó là bên trong một kịch bản shell sao lưu được khởi động bởi một Cron, vì vậy tôi không biết rõ, người dùng nào chạy nó, đường dẫn và thư mục hiện tại là gì, vì vậy luôn luôn viết đường dẫn tuyệt đối là cần thiết cho mọi thứ và muốn không thay đổi thư mục hiện tại để tránh vi phạm thêm gì đó trong kịch bản (vì nó không chỉ sao lưu các trang web, mà còn cả cơ sở dữ liệu, sau đó gửi tất cả đến FTP vv)
Làm thế nào để đạt được điều này?
Tôi vừa hiểu nhầm tùy chọn -C hoạt động như thế nào?
bản sao có thể có của [Cách sử dụng tar để lưu trữ tệp từ các thư mục khác nhau không có cấu trúc thư mục] (http://stackoverflow.com/questions/18675523/how-to-use-tar-to-archive-files-from- các thư mục khác nhau-không-directory-str) –
Stack Overflow là một trang web cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như không có chủ đề vì nó không phải là về lập trình hay phát triển. Xem [Tôi có thể hỏi những chủ đề gì ở đây] (http://stackoverflow.com/help/on-topic) trong Trung tâm trợ giúp. Có lẽ [Super User] (http://superuser.com/) hoặc [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) sẽ là một nơi tốt hơn để hỏi. – jww