Gắn hệ thống tập tin qua internet


11

Tôi đã xây dựng một ứng dụng web chạy trên một máy chủ ảo cho một trong những khách hàng của mình. Nó bao gồm cơ sở để họ tải lên các tệp, nhưng giờ họ muốn lưu trữ các tệp đó trên một máy chủ trong văn phòng của họ.

Cách dễ nhất để làm điều này là gắn hệ thống tệp của họ qua internet trực tiếp lên máy chủ ảo. Tôi có kinh nghiệm gắn NFS qua mạng nội bộ, nhưng tôi không rõ liệu nó có hoạt động trong kịch bản này không.

Có suy nghĩ gì không? Tôi luôn có thể viết phần mềm mới để chuyển các tập tin, nhưng đây sẽ là một sửa chữa dễ dàng!

Lưu ý: Máy chủ trong văn phòng là máy chủ Ubuntu 12 chạy trên máy chủ ảo trong môi trường hyper-v windows. VPS có ứng dụng web là Ubuntu 11.04


Có phải bảo mật là một vấn đề cho các tập tin này?
Adrian Cornish

rsync thông qua công việc cron.
Ignacio Vazquez-Abrams

@AdrianCornish - không thực sự, mặc dù một giải pháp an toàn sẽ được ưu tiên.

Câu trả lời:


12

Không ai đã đề cập đến sshfs chưa. Nếu bạn đang sử dụng bản phân phối linux hiện đại và có quyền truy cập ssh vào máy chủ từ xa, thì đơn giản là:

sshfs user@hostname:/remote/directory /local/directory

Hiệu suất khá chấp nhận được (nhưng không nhanh bằng đồng bộ truyền phát như rsync nếu bạn yêu cầu toàn bộ thư mục).


Đây có vẻ như là giải pháp tốt nhất cho đến nay, FAQ thậm chí còn cho biết "Tài nguyên có thể được gắn trên các kết nối chậm và không đáng tin cậy (ở xa)". Một trang web khác nói với tôi rằng "sshfs -o máy chủ kết nối lại: / path / to / mount" sẽ tự động kết nối lại nếu kết nối bị rớt.

3

NFS vốn không an toàn. Nó sẽ là một lựa chọn rất kém cho việc kết nối qua internet.

Tôi thích bài viết đề cập đến rsync. Thay vì sử dụng cron để thực hiện chuyển khoản, tôi hy vọng rằng bạn có thể chỉ cần chạy công việc rsync từ mã của bạn xử lý việc tải tệp lên.

Khi quá trình tải lên hoàn tất, hãy đồng bộ hóa tệp vào máy chủ của họ.

Bạn sẽ cần phải thiết lập một kết nối an toàn đến máy chủ của họ để chuyển, tôi mong đợi.

Nếu bạn muốn, bạn có thể đặt các tệp đến vào danh sách để chuyển, xóa tên sau khi sao chép thành công và tự cung cấp cho mình một số lỗi về khả năng, trong trường hợp có điều gì đó xảy ra với kết nối.

Như một người khác đã chỉ ra, rsync được thiết kế để xử lý các nhóm tệp hoặc phân cấp (cảm ơn, kiểm tra chính tả), vì vậy điều này sẽ không khó thực hiện.


1
rsync không có vấn đề gì khi sử dụng SSH làm phương tiện giao thông.
Ignacio Vazquez-Abrams

Ứng dụng web đã lưu các tệp trên máy chủ cục bộ và tham chiếu chúng ở đó. Sẽ không có không gian trên máy chủ cục bộ, vì vậy chúng sẽ phải bị xóa sau khi được chuyển, có nghĩa là viết mã mới, do đó tôi đang tìm giải pháp gắn kết trước, nếu có thể.

1

NFS vốn có thể không an toàn nhưng đó không phải là lỗi của dịch vụ. Telnet và FTP vốn không an toàn nhưng cả hai đã được sử dụng trong nhiều thập kỷ trên Internet mở. Nếu một đường hầm VPN được mã hóa được thiết lập, thì việc thiếu mã hóa NFS là không liên quan.

Ngoài ra, nếu tường lửa được cấu hình để chỉ cho phép một địa chỉ máy chủ từ xa cụ thể kết nối với điểm gắn kết NFS, thì kết nối NFS trần hầu như an toàn khỏi hack, ngoại trừ từ Cơ quan Ba ​​Thư đánh hơi lưu lượng truy cập Internet và có quyền truy cập vào giải mã mạnh mẽ crack kết nối từ xa được mã hóa của bạn nào.

Tôi thấy rằng một số phiên bản của NFS sử dụng UDP theo mặc định, đây có thể là vấn đề về độ tin cậy của Internet. Các gói UDP có thể bị mất nếu kết nối bị tắc nghẽn và không có sự truyền lại nào được tự động thử. Nếu bạn muốn có kết nối đáng tin cậy, hãy đảm bảo NFS của bạn đang sử dụng (hoặc buộc chỉ sử dụng) các gói TCP qua Internet.


1
> Telnet và FTP vốn không an toàn nhưng cả hai đã được sử dụng trong nhiều thập kỷ trên Internet mở Mặc dù đúng, tôi không nghĩ rằng đây là một điểm tốt, vì nhìn chung nó được coi là một cách thực hành (rất) xấu khi sử dụng chúng qua internet hiện nay. Mozilla thậm chí còn đề nghị không chấp nhận http không được mã hóa .
Ian D. Scott

0

NFS có thể được thực hiện thông qua một tường lửa. Nếu bạn tìm kiếm, bạn sẽ thấy những người khác đã cố gắng và thành công với quy trình này, tuy nhiên, nó không đơn giản như việc mở các cổng và dường như phụ thuộc vào phiên bản NFS đang được chạy.

rsync là một gợi ý tuyệt vời và có rất nhiều tính linh hoạt. Tuy nhiên, đây sẽ là một quá trình chạy bên ngoài ứng dụng của bạn. rsync có thể xử lý đồng bộ hóa các cập nhật tệp cục bộ và duy trì toàn bộ thư mục đồng bộ với các thư mục khác.

ssh sẽ là một tùy chọn an toàn khác và sẽ chỉ yêu cầu một cổng duy nhất được mở. Tôi đã sử dụng điều này trong quá khứ giữa các hệ thống Windows và Linux và đã làm việc tốt cả từ bên trong một ứng dụng cũng như lên lịch cho quá trình.

Tôi chắc chắn có nhiều cách khác để thực hiện những gì bạn đang tìm kiếm, nhưng chúng tôi cần thêm thông tin về các loại tệp này và nếu bạn đang liên kết chúng vào một trang hoặc truyền chúng vào một thứ gì đó phức tạp hơn.


Tôi hiểu các giải pháp thay thế, gắn hệ thống tập tin sẽ là giải pháp đơn giản nhất, tôi chỉ không biết NFS ổn định như thế nào qua internet so với mạng nội bộ. Điều gì xảy ra nếu kết nối giảm, v.v., hoặc nếu có một giải pháp thay thế mới hơn được thiết kế mạnh mẽ cho việc này.

0

Gắn kết NFS có thể được thực hiện bằng automount, sẽ tiếp tục thử gắn kết khi gặp sự cố, nhưng cách duy nhất tôi sẽ xem xét sử dụng nó qua các đường ống là với một vpn hoặc một số kết nối an toàn khác (thực ra, tôi sẽ không xem xét nó, nhưng bạn âm thanh cố định trên ý tưởng).

Ngay cả khi sử dụng automount, nếu có sự cố mạng và bạn đang đặt tải lên của họ trên ngàm NFS, tải lên có thể sẽ bị lỗi hoặc bị hỏng, trừ khi bạn lưu trữ tệp cục bộ và sau đó sao chép khi tải lên thành công.

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.