Saat ini, banyak perusahaan menyediakan layanan penyimpanan cloud, tetapi masing-masing memiliki klien milik sendiri dan fungsinya, sebagai aturan, menyisakan banyak yang diinginkan.
Alternatif yang ada tidak cocok untuk saya karena banyak alasan, jadi saya memutuskan untuk membuat klien universal saya sendiri - shadowcloud
Sesuatu seperti ini:

Apa yang bisa
- Unduh langsung (tanpa menggunakan disk lokal) ke Google Drive, Yandex Disk (WebDAV), cloud Mail.Ru, Dropbox
- Enkripsi penuh secara default, banyak pilihan algoritma dan pengaturan
- Database yang dilindungi kata sandi
- Checksum dan Deduplikasi
- Menghapus batas ukuran file
- Mereplikasi atau membagi file menjadi repositori yang berbeda
- Streaming media tanpa batas
- Membuat pratinjau dan mengekstrak metadata dan teks dokumen
- File versi dan seluruh struktur direktori
- Catatan penurunan harga, penyorotan kode
- Simpan halaman web dengan cepat dengan sumber daya yang disematkan
- Caching file dalam memori
- Gunakan sebagai disk lokal menggunakan FUSE (membutuhkan winfsp)
- Sumber terbuka, hampir setiap aspek dapat dikonfigurasi melalui shadowcloud.conf


Bagaimana cara menggunakan
Sebenarnya, repositori
Untuk menggunakannya perlu:
- Buat kunci enkripsi (nanti Anda perlu mengimpornya di perangkat lain)
- Siapkan penyimpanan cloud
- Buat wilayah data dan hubungkan penyimpanan ke sana (ID wilayah harus cocok pada semua perangkat)

Setelah itu, Anda dapat pergi ke panel dengan file, pilih wilayah dan unggah dokumen.
Sedikit tentang implementasi
Program ini ditulis dalam Scala dan hampir seluruhnya dibangun di atas kerangka Akka (aktor, stream, http, persistence), frontend ditulis seluruhnya di Scala.js.
Bouncy Castle dan libsodium opsional digunakan untuk enkripsi (algoritma default: Blake2b / ChaCha20 / ECIES / ECDSA).
Apache Tika dan JavaCV dikeluarkan dari versi ringan karena ukurannya yang besar, mereka digunakan untuk mengekstraksi metadata dari dokumen dan membuat pratinjau untuk video.