Điểm:1

Tham số -W của tar thực sự làm gì?

lá cờ tr

tôi đang dùng hắc ín để đóng gói một số dữ liệu. Trước khi chuyển nó vào kho lưu trữ, tôi muốn kiểm tra tính toàn vẹn của tarball. Theo trang hướng dẫn, tham số -W thực hiện xác minh:

-W, --xác minh
Xác minh kho lưu trữ sau khi viết nó.

Tôi đã thử nghiệm điều này và nó dường như làm được điều gì đó:

$ tar cvWf tartest.tar tartest/
chua cay/
tartest/dir1/
tartest/dir1/bar
tartest/dir2/
tartest/dir2/foobar
Xác minh tối thiểu /
Xác minh tartest/dir1/
Xác minh tartest/dir1/bar
Xác minh tartest/dir2/
Xác minh tartest/dir2/foobar

Nhưng chính xác những gì làm hắc ín xác minh đây? Sự hiện diện của các tập tin? Kích thước tập tin? số tiền MD5?

Điểm:1
lá cờ cn

Điều này mất một số đào để tìm ra. Trong file src/so sánh.c bên trong Git repo cho tar, chúng tôi tìm thấy một hàm có tên verify_volume (trên dòng 527 tại thời điểm viết), trong đó có nhận xét sau

Việc xác minh một kho lưu trữ có nghĩa là để kiểm tra xem phương tiện vật lý có nhận được chính xác hay không, vì vậy hãy cố gắng đánh bại bộ đệm trong bộ nhớ thông minh liên quan đến phương tiện cụ thể này. Ví dụ, trên Linux, ổ đĩa mềm thậm chí sẽ không được truy cập để xác minh toàn bộ.

Điều đó giải thích những gì nó cố gắng làm, nhưng đối với thế nào nó làm được điều đó, chúng ta cần xem mã của chức năng. Nó bắt đầu bằng cách so sánh các tiêu đề để đảm bảo chúng khớp và nếu khớp, nó sẽ chạy chức năng diff_archive (dòng 461 tại thời điểm viết), nó đi từng mục trong kho lưu trữ và khi gặp tệp *, nó sẽ chạy chức năng diff_file (dòng 187). Nó bắt đầu bằng cách kiểm tra một số thứ đơn giản, chẳng hạn như loại và kích thước tệp (và những thứ khác). Nếu tất cả những điều đó đều đúng, thì nó (đối với một tệp bình thường) sẽ đi và xác minh từng khối của tệp (trong read_and_process chức năng, dòng 120). Vì tập tin thưa thớt, nó gọi thưa thớt_diff_file (dòng 698) trong src/thưa thớt.c, kiểm tra từng vùng của tệp** bằng cách sử dụng check_sparse_region chức năng (dòng 607), cũng trong src/thưa thớt.c.

* Nó làm những việc khác cho các loại dữ liệu lưu trữ khác, chẳng hạn như thư mục

**Nó kiểm tra từng khu vực theo cách tương tự như nó kiểm tra toàn bộ tệp thông thường (không thưa thớt)

Wayne_Yux avatar
lá cờ tr
Ồ, vậy là nó còn làm được nhiều hơn những gì tôi mong đợi - thật tuyệt! Cảm ơn rất nhiều!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.