2013-03-07 32 views
8

Tôi đang cố tạo bản vá bằng cách sử dụng hai thư mục kích thước lớn (~ 7GB).bộ nhớ đã cạn kiệt: đối với các tệp lớn bằng cách sử dụng khác

Sau đây là cách tôi đang làm nó:

$: # diff -Naurbw. ../other-folder> file.patch

Nhưng có lẽ do kích thước tập tin, vá không nhận được tạo ra và đưa ra một lỗi:

diff: bộ nhớ cạn kiệt

tôi đã cố gắng làm cho không gian hơn 15 GB nhưng vấn đề vẫn tồn tại.

Ai đó có thể giúp tôi với những lá cờ mà tôi nên sử dụng không?

+2

Tôi googled "diff large linux files" và tìm thấy [this] (http://unix.stackexchange.com/questions/2150/diffing-two-big-text-files) trong số rất nhiều liên kết khác, bạn có thể ít nhất là giả vờ đã thực hiện một số nghiên cứu ... đây cũng là chủ đề không đúng. – Thomas

+1

có, tôi đã cố gắng googling nó và tìm thấy một số thay đổi tham số và lỗi "bộ nhớ cạn kiệt" vẫn còn đó, ngay cả khi sử dụng "--peed-large-files" cờ. – pritam

+1

Làm thế nào để phân biệt chúng trong nhiều bước? ví dụ. chia các thư mục vào, nói, khối 1GB, khác biệt, sau đó nối các miếng vá, mặc dù tôi không chắc chắn nếu khác có thể được chia như vậy (vì vậy bạn có thể cần một số logic thêm để áp dụng các bản vá). Tại sao bạn lại phân biệt 7GB thư mục ở nơi đầu tiên? Chắc chắn chỉ một số tệp/thư mục bên trong nó đã thay đổi? – Thomas

Trả lời

12

Gần đây, tôi cũng đã xem xét điều này khi tôi cần tìm hai tệp lớn (> 5Gb mỗi tệp).

Tôi đã cố gắng sử dụng 'diff' với các tùy chọn khác nhau, nhưng ngay cả --speed-large-files cũng không có hiệu lực. Các phương pháp khác như chia nhỏ các tệp thành các tệp nhỏ hơn, sử dụng xdelta hoặc sắp xếp các tệp theo số this suggestion cũng không giúp ích gì. Tôi thậm chí đã có bàn tay của tôi xung quanh một máy ảo rất mạnh (> 72Gb RAM), nhưng vẫn có lỗi này memory exhausted.

Cuối cùng tôi đã làm việc bằng cách thêm tham số sau đây để sysctl.conf (sudo vim /etc/sysctl.conf):

vm.overcommit_memory=1 

Để chắc chắn rằng các tham số thực sự là áp dụng bạn có thể chạy

sudo sysctl -p 

Đừng quên để thay đổi thông số này trở lại khi bạn hoàn thành!

+1

Cảm ơn bạn đã chỉnh sửa, tôi là người mới ở stackoverflow. Ngoài ra, một số giải thích về tham số này: vm.overcommit_memory có ba giá trị (0,1,2) và đặt chế độ kế toán bộ nhớ ảo hạt nhân. 'man 5 proc' 0: heuristic overcommit (đây là mặc định) 1: luôn luôn overcommit, không bao giờ kiểm tra 2: luôn luôn kiểm tra, không bao giờ overcommit – Igor

+1

Tôi thực sự là một chút buồn về thực tế, đó là một thú vị và unstandard anwser, được tìm thấy bởi tôi và được chia sẻ, chỉ tạo +2 đại diện cho tôi. trong khi câu chuyện scho0l, làm thế nào tôi chơi với python, nhiều nhàm chán hơn, đã cho tôi nhiều hơn nữa @pritam – Igor

+1

Tôi đồng ý, thú vị, phi tiêu chuẩn, và nó làm việc cho tôi! So sánh hai tệp 70GB, tôi thấy ví dụ:317TB RAM ảo và 150TB thường trú ... so sánh không thể chạy trước khi ngay cả với RAM 250GB hiện đã hoàn thành. Rất thông minh! –

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