giữ rsync loại bỏ các tệp nguồn chưa hoàn thành


169

Tôi có hai máy, tốc độ và khối lượng. speed có kết nối Internet nhanh và đang chạy trình thu thập thông tin tải rất nhiều tệp vào đĩa. khối lượng có rất nhiều không gian đĩa. Tôi muốn chuyển các tệp từ tốc độ sang hàng loạt sau khi tải xuống xong. Lý tưởng nhất là tôi chỉ chạy:

$ rsync --remove-source-files speed:/var/crawldir .

nhưng tôi lo rằng rsync sẽ hủy liên kết tệp nguồn chưa tải xuống xong. (Tôi đã xem mã nguồn và tôi không thấy gì bảo vệ chống lại điều này.) Có đề xuất nào không?

Câu trả lời:


10

Dường như với tôi, vấn đề là chuyển một tập tin trước khi hoàn tất, không phải là bạn đang xóa nó.

Nếu đây là Linux, có thể mở tệp bằng quy trình A và quy trình B có thể hủy liên kết tệp. Không có lỗi, nhưng tất nhiên A đang lãng phí thời gian. Do đó, thực tế là rsync xóa tệp nguồn không phải là vấn đề.

Vấn đề là rsync chỉ xóa tệp nguồn sau khi được sao chép và nếu nó vẫn được ghi vào đĩa, bạn sẽ có một phần tệp.

Làm thế nào về điều này: Gắn kết massnhư một hệ thống tệp từ xa (NFS sẽ hoạt động) trong speed. Sau đó, chỉ cần thu thập dữ liệu web trực tiếp các tập tin.


9

Bạn có bao nhiêu quyền kiểm soát trong quá trình tải xuống? Nếu bạn tự cuộn, bạn có thể tải tệp xuống thư mục tạm thời hoặc có tên tạm thời cho đến khi tải xuống xong, sau đó chuyển nó thành tên chính xác khi hoàn tất. Nếu bạn đang sử dụng phần mềm của bên thứ ba, thì bạn không có nhiều quyền kiểm soát, nhưng bạn vẫn có thể thực hiện điều thư mục tạm thời.


3

Rsync có thể loại trừ các tập tin phù hợp với các patters nhất định. Ngay cả khi bạn không thể sửa đổi nó để làm cho nó tải tệp xuống một thư mục tạm thời, có thể nó có một quy ước đặt tên các tệp khác nhau trong khi tải xuống (ví dụ: foo.downloadingtrong khi tải xuống cho một tệp có tên foo) và bạn có thể sử dụng thuộc tính này để loại trừ các tệp vẫn đang được tải xuống từ đang được sao chép.


3

Nếu bạn có quyền kiểm soát quá trình thu thập thông tin hoặc có đầu ra có thể dự đoán được, các giải pháp trên (lưu trữ trong tempfile cho đến khi hoàn tất, sau đó chuyển đến vị trí tải xuống đã hoàn thành hoặc bỏ qua các tệp có tên '.tải xuống') có thể làm việc. Nếu tất cả điều đó nằm ngoài tầm kiểm soát của bạn, bạn có thể đảm bảo rằng tệp không được mở bởi bất kỳ quy trình nào bằng cách thực hiện 'lsof $ filename' và kiểm tra xem có kết quả không. Rõ ràng nếu không có ai mở tệp, thì an toàn để di chuyển nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.