2012-06-15 11 views
6

Tác vụ: Cung cấp cơ sở để nâng cấp hệ thống từ xa hoặc thêm các tính năng mới.để duy trì liên kết cứng và biểu tượng, quyền trong khi tạo bóng tar và làm tương tự khi tháo tarball

Tôi phải làm gì Tạo sao lưu môi trường hiện tại của máy đích và nếu nâng cấp không thành công ở bất kỳ giai đoạn nào, sau đó hoàn nguyên về môi trường ban đầu.

Say cấu trúc thư mục của tôi là một cái gì đó như thế này:

/home/user/project1/....bla bla

dự án 1 chứa các liên kết tượng trưng, ​​liên kết cứng, các file thực thi của phần mềm và firmware, vv

tiến thoái lưỡng nan của tôi

tôi có nên sử dụng chiến lược 1 hoặc 2?

  1. Tôi có nên sao chép toàn bộ môi trường hiện tại và hoàn nguyên trở lại nếu nâng cấp không thành công.

    dụ -> cp -r -p/home/user/project1/*/home/user/project1_backup/

    nếu nâng cấp thất bại ->

    mv/home/user/project1_backup// home/user/project1

  2. Tôi có nên tarball toàn bộ môi trường và gỡ bỏ nó nếu nâng cấp không thành công. Để tạo bóng tar, tôi hơi hoài nghi về việc bảo quản các liên kết tượng trưng và các liên kết cứng .. và tương tự trong khi tháo nó ra.

Có thể vui lòng cung cấp câu trả lời cụ thể về phương pháp nào tôi nên làm theo và nếu tôi sử dụng lệnh tar ball thì lệnh bash sẽ là gì.

Theo như tôi biết tar -cvfz để tạo tar gunzip sẽ không giữ nguyên các liên kết và quyền và tương tự trong khi gỡ bỏ bóng tar. Vui lòng ném một số ánh sáng?

+0

Các tarball sẽ duy trì thông tin về liên kết, biểu tượng và khó khăn, và cho phép. Chủ sở hữu và nhóm sẽ được khôi phục trên trích xuất nếu người dùng có 'quyền thích hợp' (có đặc quyền 'root'). Nếu không, chủ sở hữu sẽ là người dùng giải nén tarball và nhóm sẽ là người được ghi trong tarball (nếu người dùng thuộc nhóm đó) hoặc sẽ là nhóm chính của người dùng. Các quyền sẽ được giữ nguyên. Cẩn thận với các đường dẫn tương đối tuyệt đối trong các liên kết tượng trưng. –

+0

Câu hỏi này không nên đóng. Đó là một câu hỏi hoàn toàn hợp lệ và nó được mô tả khá độc đáo. Tuy nhiên tôi nghĩ rằng nó sẽ phù hợp hơn superuser hơn SO. – gaborous

Trả lời

10

Tôi sẽ sử dụng tùy chọn thứ hai: tạo tarball; vì tarball có một số điểm tích cực:

  • Bạn có thể duy trì sự cho phép/file đặc biệt trên hệ thống tập tin (hữu ích khi bạn sao lưu của bạn một ext * thư mục để một hệ thống tập tin NTFS)
  • Một bản sao của một tập tin lớn duy nhất sẽ nhanh hơn hơn một nghìn tệp nhỏ
  • Bạn có thể nén nó.

Và đây là lệnh:

tar --preserve-permissions --preserve-order -jc /path/to/your/folder > /path/to/your/backup_file.tar.bz2 

này sẽ giữ gìn cho phép của bạn, liên kết tượng trưng của bạn. Và đối với các liên kết cứng, tôi cung cấp cho bạn liên kết này (http://www.gnu.org/software/tar/manual/html_node/hard-links.html)

(nhưng theo mặc định, tar giữ gìn hardlinks)

Đừng quên kiểm tra tarball của bạn trước khi nâng cấp hệ thống của bạn !!

(bạn sẽ tránh được hầu hết tất cả mất dữ liệu trong trường hợp của các kho lưu trữ không được tạo ra một cách chính xác)

+0

Cảm ơn tim cho đầu vào có giá trị – samantha

+0

Một công cụ thú vị khác: [gzip-links] (http://www.argon.org/~roderick/gzip-links.html). Có thể được kết hợp với tar để nén toàn bộ thư mục. – gaborous

Các vấn đề liên quan