Gắn kết chia sẻ mạng và hợp nhất với các tệp hiện có trong điểm gắn kết


1

Tôi có một chương trình đang chạy trên Raspberry Pi 3 (Raspbian Jessie) làm rơi các tệp trong một thư mục có tên /mount-point. Khi khởi động, tôi đang cài đặt chia sẻ windows /incoming đến /mount-point. Có một chương trình windows đang xử lý các tệp này khi chúng được đưa vào chia sẻ.

mount -t cifs -o username=<share user>,password=<share password> //<Win-IP>/c/incoming /home/pi/mount-point

Sự cố xảy ra nếu mạng bị sập. Nếu mạng ngừng hoạt động, chương trình linux tiếp tục thả các tệp vào /mount-point danh mục. Khi mạng hoạt động trở lại, chia sẻ cửa sổ sẽ được hiển thị lại và mọi tệp hiện có trong /mount-point được gắn kết và biến mất.

Có cách nào để "hợp nhất gắn kết" các cửa sổ chia sẻ để mọi tệp hiện có trong /mount-point không bị ẩn và xuất hiện trong /incoming trên cửa sổ?

Câu trả lời:


4

Không có cách nào để hợp nhất trực tiếp nội dung của một điểm gắn kết như thế này. Tùy chọn gần nhất là sử dụng liên kết / quá mức, nhưng chúng không hoạt động đáng tin cậy với các hệ thống tệp được nối mạng và những gì bạn sẽ phải làm để làm cho nó hoạt động hoàn toàn trong trường hợp này là không trực quan.

Lý tưởng nhất, có lẽ bạn nên:

  1. Dạy chương trình của bạn để phát hiện xem chia sẻ có được gắn kết hay không và sau đó lưu bộ đệm vào các tệp nếu chia sẻ không được gắn kết và sau đó ghi chúng ra khi có.
  2. Yêu cầu chương trình của bạn ghi dữ liệu vào một vị trí riêng biệt và sử dụng tác vụ định kỳ (sử dụng bộ đếm thời gian cronjob hoặc systemd) để sao chép các tệp vào chia sẻ nếu được gắn.

Cả hai trường hợp đều mạnh hơn gắn kết liên kết và cả hai trường hợp này cũng không rõ ràng hơn về cấu hình lưu trữ cơ bản (đây là một điều tốt cho khả năng bảo trì).


Cảm ơn vì đã trả lời. Cả hai đều là những gợi ý tuyệt vời, không may là thời gian là một yếu tố với các tệp được xử lý.
S May

1
Tôi nghĩ rằng tôi sẽ viết một tập lệnh bash cố gắng sao chép bất kỳ tệp nào ra khỏi / mount-point, kết nối lại chia sẻ, sau đó cố gắng sao chép các tệp đó vào chia sẻ / mount-point mới. Cảm ơn đã giúp đỡ!
S May

@AustinHemmelgarn Bạn có chắc chắn AUFS sẽ không xử lý chính xác các liên kết được hỗ trợ bởi SMB - từ Google của tôi, có vẻ như nó hoạt động tốt?
davidgo

@davidgo Tôi không chính xác về AUFS (nhưng không phải OverlayFS, là thượng nguồn), nhưng điều đó cũng yêu cầu xây dựng và tải mô-đun của bên thứ ba và có các vấn đề khác, cụ thể là nó vẫn yêu cầu theo dõi thêm bởi một cái gì đó, sẽ thất bại theo những cách thú vị nếu một trong các chi nhánh ngoại tuyến và không cung cấp một cách dễ dàng để xóa các bản sao cục bộ khỏi hệ thống tệp của Pi. Mặc dù vậy, điều cuối cùng mang đến một điều mà tôi chưa từng nghĩ tới, đó là có thể tốt hơn để chia sẻ các tệp từ Pi sang Windows, chứ không phải là cách khác như hiện tại.
Austin Hemmelgarn

0

Có thể (nhưng hơi cồng kềnh) để gắn kết mọi thứ theo cách, vì vậy Linux thấy các tập tin cục bộ và từ xa trong cùng một thư mục. Tuy nhiên, Windows của bạn sẽ chỉ thấy các tệp tồn tại ở phía Windows.

Nếu bạn nói với chương trình của bạn để di chuyển các tập tin đến /mount-point/some-dir/ thay vào đó, mà không tồn tại khi chia sẻ không được gắn kết, nó có thể hoặc không đủ thông minh để thử lại sau. Nếu nó đủ thông minh, đây có thể là cách giải quyết dễ dàng nhất.

Nếu nó không đủ thông minh, hãy để nó di chuyển tệp đến thư mục khác và chạy một công việc định kỳ để di chuyển các tập tin vào chia sẻ. Làm cho nó đủ thông minh. Đơn giản mv sẽ hủy bỏ nếu thư mục đích không tồn tại.


2
Thay vì tạo thư mục con trong chia sẻ Windows (sau đó sẽ xuất hiện dưới điểm gắn kết khi chia sẻ được gắn kết), nó có thể đủ tốt để chmod nằm dưới /mount-point thư mục tới 555 (tức là, làm điều này khi chia sẻ không được gắn kết). Điều này cũng sẽ khiến thao tác di chuyển không thành công khi chia sẻ không được gắn kết (trừ khi chương trình đang chạy đặc quyền).
Scott
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.