Restic: Rclone membuat sebagian besar backend menjadi mubazir

Dibuat pada 22 Sep 2019  ·  17Komentar  ·  Sumber: restic/restic

Saya sarankan untuk menghapus semua backend repositori secara bertahap demi rclone - ini mengurangi pemeliharaannya (katakanlah masalah keamanan) dan pengaturan yang lebih sederhana.

Adakah sisi negatif dari tindakan ini?

  • Kompatibilitas mundur (mendorong pengguna untuk menggunakan rclone?)

Komentar yang paling membantu

Saya tidak akan mengganti backend yang ada dengan rclone, kecuali yang terakhir berhasil disematkan sebagai perpustakaan, dan dengan demikian selalu disertakan dalam distribusi restic.

Sampai ini selesai (atau alih-alih melakukan ini), saya akan membuat rclone ketergantungan opsional pada manajer paket yang mengizinkan ini (misalnya, apt dan portage). Jika rclone tidak diinstal, restic dapat menampilkan pesan yang merujuk ke halaman Web rclone, menyarankan untuk (1) berkonsultasi dengan halaman untuk cara menginstal, (2) menginstal rclone menggunakan manajer paket sistem, (3) mengeluarkan "curl + bash", dengan peringatan bahwa "pastikan Anda tahu apa yang Anda lakukan".

Saya tidak akan menjalankan perintah atas nama pengguna, bahkan setelah menanyakannya.

Semua 17 komentar

Ini bahkan tidak masuk akal. Rclone adalah utilitas transfer, bukan utilitas cadangan. Itu tidak dapat menggantikan repositori restic.

Dia mungkin hanya bermaksud membuang kode backend restic sendiri, kecuali yang untuk rclone, sehingga integrasi rclone menjadi salah satu yang dilalui semua backend.

@jtagcat Saya pikir maksud Anda "backend" bukan "repositori".

Saya setuju dengan proposal ini dalam semangat.
Sebenarnya menghapus semua backend lain mungkin terlalu mengganggu, tetapi setidaknya dokumentasi dapat menyorot rclone sebagai backend pilihan, dan memberi label backend jarak jauh lainnya sebagai "warisan".

Sebenarnya saya pikir kita bisa melakukan yang lebih baik, kemudian menandai backend sebagai warisan.
Dalam dokumen, tandai sebagai warisan, tetapi dalam karya batin, terjemahkan warisan ke rclone dengan cepat. Pada beberapa backend rclone, Anda dapat langsung menerjemahkan ( contoh dari atas kepala saya adalah http ), yang lain Anda menerjemahkan ke file konfigurasi sementara, kemudian menggunakan --config /path/to/config dengan rclone.

Jika Anda bertanya kepada saya sebagai pengguna restic, saya akan mengatakan harus menggunakan rclone untuk semua backend akan mengerikan. Ini membutuhkan pengaturan konfigurasi rclone untuk backend Anda dan menjaga biner rclone, yang pertama sangat menghilangkan sifat ad-hoc dan bebas konfigurasi dari restic yang sangat bagus. Satu hal yang saya tidak suka tentang rclone adalah saya harus mengonfigurasinya sebelum menjalankannya, alih-alih hanya bisa memberikan dua URI sebagai sumber dan target.

Saran IMO yang lebih baik adalah jika kami dapat menyematkan rclone di restic, sehingga Anda dapat terus menggunakan restic sama seperti yang Anda lakukan sekarang, tetapi dengan dukungan backend yang disediakan rclone. Jika itu terjadi, tidak apa-apa untuk membuang kode backend saat ini dengan asumsi kode rclone yang sesuai menyediakan fitur yang sama.

Bagaimana Anda menyematkan rclone di restic? Jika masalah ini ingin ditutup secara positif, itu harus dilakukan.
Apakah Anda akan seperti 'rclone not found, running curl https://rclone.org/install.sh | sudo bash ' (curl dan Sudo mungkin tidak ada di sistem)? Karena Anda tidak bisa begitu saja menambahkannya sebagai dependensi di pengelola paket, jika Anda tidak menginstal melalui pengelola pkg.

Menerjemahkan backend saat ini ke konfigurasi rclone sementara dengan cepat dimungkinkan , ketika menggunakan rclone murni untuk hal-hal, saya sendiri juga agak kesal dengan itu.

Bagaimana Anda menyematkan rclone di restic?

Saya belum menyelidiki apa yang mungkin dalam hal itu. Itu hanya sesuatu yang saya pikirkan beberapa kali.

Memikirkannya sedikit lagi, penyematan mungkin akan berakhir sebagai 'menginstal sebagai ketergantungan', untuk memungkinkan rclone menjadi yang terbaru tanpa restic yang perlu diperbarui.
Mungkin cara terbaik adalah menambahkan rclone sebagai dependensi, jika memungkinkan dan memiliki 'rclone not found, install' di mana-mana (ketika ketergantungan rclone tidak ditemukan karena alasan tertentu, sebagai cadangan).

Meskipun penginstal rclone menghadirkan beberapa masalah. Jadikan itu kompatibel dengan posix.

  • curl - Saya telah melihat satu atau dua sistem, di mana itu tidak dipasang di luar kotak.
  • sudo - sama seperti di atas
  • unzip/dekompresi lainnya, Anda mungkin pernah mengalami ini, saat menginstal rclone pada instalasi minimal.

Saya lebih berpikir untuk menjadikan rclone dapat disematkan sebagai al library atau apa pun sehingga dapat diintegrasikan dalam restic. Seharusnya tidak menjadi masalah untuk merilis versi restic baru ketika ada sesuatu di rclone yang diperbarui sejauh itu menjamin rilis baru.

Mungkin cara terbaik adalah menambahkan rclone sebagai dependensi, jika memungkinkan dan memiliki 'rclone not found, install' di mana-mana (ketika ketergantungan rclone tidak ditemukan karena alasan tertentu, sebagai cadangan).

Maaf untuk mengatakan itu, tetapi mencoba (secara otomatis) menginstal perangkat lunak pada mesin pengguna adalah (mungkin) ide terburuk yang pernah saya baca dalam diskusi masalah restic.

Karena:

  • Lingkungan mungkin tidak mengizinkan penginstalan perangkat lunak baru.
  • Pengguna (atau administrator sistem) mungkin tidak ingin menginstal perangkat lunak baru.
  • Mengakses Internet tanpa permintaan eksplisit mungkin tidak diinginkan.
  • Pemasang mungkin menebak tempat yang salah untuk perangkat lunak baru.
  • Instalasi perangkat lunak baru dapat mengganggu fungsi normal lingkungan (misalnya, dengan menyediakan executable di luar tempat biasa di mana pengguna/manajer paket/administrator/auditor/apa pun berharap untuk menemukannya, dan dengan demikian menciptakan kebingungan).
  • Instalasi mungkin gagal atau menghasilkan hasil yang salah; baik dengan cara yang jelas, atau dengan cara yang halus dan sulit ditemukan.

Mungkin cara terbaik adalah menambahkan rclone sebagai dependensi, jika memungkinkan dan memiliki 'rclone not found, install' di mana-mana (ketika ketergantungan rclone tidak ditemukan karena alasan tertentu, sebagai cadangan).

Maaf untuk mengatakan itu, tetapi mencoba (secara otomatis) menginstal perangkat lunak pada mesin pengguna adalah (mungkin) ide terburuk yang pernah saya baca dalam diskusi masalah restic.

Karena:

* The environment may not allow installation of new software.

* The user (or the system administrator) may not want new software to be installed.

* Accessing the Internet without explicit request may be undesirable.

* The installer may guess a wrong place for the new software.

* Installation of new software may interfere with the normal functions of the environment (for example, by providing executables outside of regular places where users/package managers/administrators/auditors/whatever else expect to find them, and thus creating confusion).

* The installation may fail or produce incorrect results; either in an obvious manner, or in a subtle and hard-to-discover way.

ya, apa yang Anda sarankan?

yang saya maksud adalah seperti ini:

restic rclone not found...
Install 'rclone' with command 'curl https://rclone.org/install.sh | sudo bash'  to provide rclone backends? [Y/n]

Saya tidak akan mengganti backend yang ada dengan rclone, kecuali yang terakhir berhasil disematkan sebagai perpustakaan, dan dengan demikian selalu disertakan dalam distribusi restic.

Sampai ini selesai (atau alih-alih melakukan ini), saya akan membuat rclone ketergantungan opsional pada manajer paket yang mengizinkan ini (misalnya, apt dan portage). Jika rclone tidak diinstal, restic dapat menampilkan pesan yang merujuk ke halaman Web rclone, menyarankan untuk (1) berkonsultasi dengan halaman untuk cara menginstal, (2) menginstal rclone menggunakan manajer paket sistem, (3) mengeluarkan "curl + bash", dengan peringatan bahwa "pastikan Anda tahu apa yang Anda lakukan".

Saya tidak akan menjalankan perintah atas nama pengguna, bahkan setelah menanyakannya.

Sifat RESTIC (terutama di linux) sebagai biner statis tanpa ketergantungan telah SANGAT BERHARGA dalam skenario pemulihan dan pemulihan bare-metal.

Saat ini saya lebih suka menggunakan "rest-server" (dengan frontend haproxy untuk otentikasi) untuk cadangan internal dan bergantung pada restic yang mendukungnya secara asli. Jika saya terpaksa mengacaukan RESTIC dan RCLONE selama pemulihan kritis, saya mungkin akan menemukan solusi lain.

Sifat RESTIC (terutama di linux) sebagai biner statis tanpa ketergantungan telah SANGAT BERHARGA dalam skenario pemulihan dan pemulihan bare-metal.

Saat ini saya lebih suka menggunakan "rest-server" (dengan frontend haproxy untuk otentikasi) untuk cadangan internal dan bergantung pada restic yang mendukungnya secara asli. Jika saya _dipaksa_ untuk mengacaukan RESTIC _and_ RCLONE selama pemulihan kritis waktu, saya mungkin akan menemukan solusi lain.

Istirahat backend tidak akan dihapus, karena itu unik untuk Restic. Saya juga menggunakan rest-server, sangat nyaman untuk memasukkan kredensial.

Saya pikir masalahnya adalah dalam keadaan 'hanya, jika rclone disematkan'. Karena tidak ada yang benar-benar membutuhkan ini (meskipun rclone yang disematkan akan lebih baik). Saya kira sekarang, ini lebih 'jangan tambahkan backend baru, apa yang belum didukung oleh rclone', dan permintaan fitur untuk seseorang (mungkin dalam beberapa bulan, saya), yang repot-repot melakukan ini, sematkan rclone .

Adapun bare-bones, perlu mengeluarkan rilis alternatif, yang tidak menggunakan bzip (sejauh yang saya dengar, satu-satunya alasan menginstal bzip adalah restic). Adapun itu, jika tidak ada orang lain yang melakukannya, saya mungkin akan melakukannya, karena todo untuk saya adalah #2705

Satu hal yang saya tidak suka tentang rclone adalah saya _memiliki_ untuk mengonfigurasinya sebelum menjalankannya, alih-alih hanya bisa memberikan dua URI sebagai sumber dan target.

@rawtaz
Anda dapat melakukan hal itu karena rclone tidak mengharuskan Anda untuk mengkonfigurasi apa-apa.
Anda dapat sepenuhnya menghapus _~/.rclone.conf_ atau _~/.config/rclone/rclone.conf_, mereka hanya dikonsultasikan untuk opsi default atau fallback.
Sekarang coba ini:

rclone copy ./file.txt :sftp:subdir --sftp-host=localhost --sftp-key-file=~/.ssh/id_rsa

Ini sangat valid dan dijelaskan dalam dokumen: https://rclone.org/docs/#backend -path-to-dir

Anda juga dapat meneruskan semua opsi melalui lingkungan atau mencampurnya dengan argumen CLI:

export RCLONE_SFTP_HOST=localhost
export RCLONE_SFTP_KEY_FILE=~/.ssh/id_rsa
rclone ls :sftp:

Menggunakan rclone sebagai perpustakaan dibahas di https://github.com/rclone/rclone/issues/633

Apakah halaman ini membantu?
0 / 5 - 0 peringkat