Saya membangun aplikasi web yang berjalan di server virtual untuk salah satu pelanggan saya. Ini termasuk fasilitas bagi mereka untuk mengunggah file, tetapi mereka sekarang ingin menyimpan file-file itu di server di kantor mereka.
Cara termudah untuk melakukan ini adalah dengan memasang sistem file mereka melalui internet langsung ke server virtual. Saya memiliki pengalaman memasang NFS melalui jaringan internal, tetapi saya tidak jelas apakah itu akan berhasil dalam skenario ini.
Adakah pikiran? Saya selalu dapat menulis perangkat lunak baru untuk mentransfer file, tetapi ini akan menjadi perbaikan yang mudah!
Catatan: Server di kantor adalah server Ubuntu 12 yang berjalan di server virtual di lingkungan windows hyper-v. VPS dengan aplikasi web adalah Ubuntu 11.04
sumber
Jawaban:
Belum ada yang menyebutkan sshfs . Jika Anda menggunakan distro linux modern dan memiliki akses ssh ke host jarak jauh, sesederhana:
Performa cukup dapat diterima (tetapi tidak secepat sinkronisasi yang di-stream seperti rsync jika Anda memerlukan seluruh direktori).
sumber
NFS secara inheren tidak aman. Ini akan menjadi pilihan yang sangat buruk untuk terhubung melalui internet.
Saya suka posting yang menyebutkan rsync. Daripada menggunakan cron untuk menjalankan transfer, saya berharap Anda bisa menjalankan pekerjaan rsync dari kode Anda yang menangani unggahan file.
Ketika unggahan selesai, rsync file ke server mereka, selesai.
Anda perlu mengatur koneksi aman ke server mereka untuk transfer, saya harapkan.
Jika Anda mau, Anda bisa memasukkan file yang masuk ke daftar untuk ditransfer, menghapus nama setelah salinan berhasil, dan memberikan diri Anda beberapa kegagalan atas kemampuan, jika terjadi sesuatu pada koneksi.
Seperti yang telah ditunjukkan orang lain, rsync dirancang untuk menangani grup file, atau hierarki (terima kasih, periksa ejaan), jadi ini tidak akan terlalu sulit untuk dicapai.
sumber
NFS mungkin secara inheren tidak aman tetapi itu bukan kesalahan layanan. Telnet dan FTP secara inheren tidak aman tetapi keduanya telah digunakan selama beberapa dekade di Internet terbuka. Jika terowongan VPN terenkripsi dibuat, maka kurangnya enkripsi NFS tidak relevan.
Juga jika firewall dikonfigurasikan untuk hanya memungkinkan alamat host jarak jauh tertentu untuk terhubung ke NFS mountpoint, maka koneksi NFS yang telanjang sebagian besar aman dari peretasan, kecuali dari Tiga Agen Huruf yang mengendus lalu lintas Internet, dan yang memiliki akses ke dekripsi yang kuat untuk pecahkan koneksi remote terenkripsi Anda.
Saya melihat bahwa beberapa versi NFS menggunakan UDP secara default, yang kemungkinan berasal dari masalah keandalan Internet. Paket UDP dapat hilang jika koneksi terputus, dan tidak ada pengiriman ulang yang dilakukan secara otomatis. Jika Anda ingin koneksi yang andal, pastikan NFS Anda menggunakan (atau terpaksa hanya menggunakan) paket TCP melalui Internet.
sumber
NFS dapat dilakukan melalui firewall. Jika Anda mencari, Anda akan menemukan orang lain yang telah mencoba dan berhasil dengan proses ini, namun, itu tidak semudah membuka port dan tampaknya tergantung pada versi NFS yang sedang dijalankan.
rsync adalah saran yang bagus dan memiliki banyak fleksibilitas. Namun, ini akan menjadi proses yang dijalankan di luar aplikasi Anda. rsync dapat menangani penyelarasan dari pembaruan file lokal dan memelihara seluruh direktori dalam sinkronisasi dengan folder lain.
ssh akan menjadi opsi aman lainnya dan hanya akan membutuhkan satu port untuk dibuka. Saya telah menggunakan ini di masa lalu antara sistem Windows dan Linux dan telah bekerja dengan baik baik dari dalam aplikasi maupun penjadwalan proses.
Saya yakin ada cara lain untuk mencapai apa yang Anda cari, tetapi kami membutuhkan informasi lebih lanjut tentang jenis-jenis file ini dan jika Anda menautkannya ke halaman atau mengalirkannya dengan sesuatu yang lebih kompleks.
sumber
Mount NFS dapat dilakukan menggunakan automount, yang akan terus mencoba mount pada kegagalan, tetapi satu-satunya cara saya akan mempertimbangkan menggunakannya di atas pipa adalah dengan vpn atau koneksi aman lainnya (sebenarnya, saya tidak akan mempertimbangkannya, tetapi Anda terdengar terpaku pada ide).
Bahkan menggunakan automount, jika ada masalah jaringan, dan Anda meletakkan unggahan mereka di mount NFS, unggahan tersebut kemungkinan akan gagal atau rusak, kecuali jika Anda menyimpan file secara lokal dan kemudian menyalin pada keberhasilan unggahan.
sumber