GNU/Linux >> Belajar Linux >  >> Linux

Semuanya ada di file titik - YADM dan Homeshick

Backup itu penting. Backup sangat penting. Cadangan adalah cinta, cadangan adalah kehidupan. Selama bertahun-tahun, saya telah berbicara tentang nilai utama menjaga keamanan data Anda, dan itu berarti banyak salinan, banyak lokasi. Kami juga berbicara tentang bagaimana membuat setup cepat Anda sendiri dengan tar dan gpg baru-baru ini. Yang itu mencakup pengaturan data dan aplikasi. Berbicara tentang yang terakhir ...

Mari kita memperluas ini lagi. Jika Anda memiliki banyak komputer, sering menginstal ulang sistem, atau hanya ingin memiliki konfigurasi yang konsisten di beberapa host, Anda mungkin tertarik dengan cara mengelola pengaturan aplikasi. Di Linux, sebagian besar perangkat lunak menyimpan konfigurasinya dalam file tersembunyi di dalam direktori home, baik di tingkat atas (/home/nama pengguna) atau di dalam sub-direktori .config. Either way, mungkin ada banyak dari mereka, Anda ingin memastikan Anda selalu memiliki salinan, dan jika terjadi kesalahan, Anda dapat dengan mudah kembali ke pos pemeriksaan yang baik. Memperkenalkan YADM dan Homeshick.

Pengelola Dotfiles (YADM) Lainnya

Namanya tidak menginspirasi, tetapi program ini hadir dengan misi yang mulia. Ini dirancang untuk membantu Anda menyimpan salinan versi file konfigurasi Anda, sehingga Anda memiliki pengaturan yang fleksibel dan kuat. Konsep ini berbeda dari perangkat lunak yang mencoba menebak pengaturan Anda secara otomatis - ini lebih seperti satu baris manual saya di atas, di mana Anda harus mengurus setiap file konfigurasi secara terpisah. Namun, penyiapan DIY mengharuskan Anda terus-menerus menyimpan salinan data, dan ini mungkin merepotkan, ditambah lagi Anda tidak perlu tahu cadangan mana yang berisi perubahan yang tepat.

YADM bertujuan untuk memperkenalkan elemen kedalaman temporal dengan menggunakan git di latar belakang. Pada dasarnya, Anda melakukan konfigurasi Anda sendiri ke repo Anda sendiri, dan ini memberi Anda semua bagian yang diperlukan, seperti riwayat versi, diff, dan sejenisnya. Baiklah, mari kita lihat cara kerjanya.

Awal yang menjanjikan. Saya menjalankan YADM, dan saya dapat menambahkan file:

roger@matrix:~$ yadm tambahkan .ssh
roger@matrix:~$ yadm tambahkan .gnupg

Namun, ketika saya mencoba mengkomit file, YADM mengeluh bahwa YADM tidak tahu siapa saya:

roger@matrix:~$ yadm commit

*** Tolong beri tahu saya siapa Anda.

Jalankan

git config --global user.email "[email protected]"
git config --global user.name "Nama Anda"

untuk mengatur identitas default akun Anda.
Abaikan --global untuk menyetel identitas hanya di repositori ini.

fatal:tidak dapat mendeteksi alamat email secara otomatis (mendapat 'roger@matrix.(none)')

Kesalahan ini agak tidak perlu. Program dapat memeriksa apakah Anda telah mengidentifikasi sebelum Anda menambahkan file apa pun. Selain itu, saya tidak yakin apa yang akan terjadi jika Anda mengidentifikasi dengan email atau nama yang salah? Bagaimana ini akan memengaruhi otentikasi nanti? Saya memutuskan untuk tidak mengambil risiko, jadi saya menggunakan localhost untuk melewati tahap ini, dan kemudian saya bisa melakukan.

roger@matrix:~$ git config --global user.email "[email protected]"
roger@matrix:~$ git config --global user.name "Roger Bodger"

yadm commit -m "Pengujian melakukan batch pertama"
[master (root-commit) fe99215] Pengujian melakukan batch pertama
2 file diubah, 0 penyisipan(+), 0 penghapusan(-)
buat mode 100644 .gnupg/pubring.kbx
buat mode 100644 .gnupg/trustdb.gpg

Tapi kemudian, langkah terakhir membuat saya bingung - dorongan yang sebenarnya. Ya, saya tahu cara kerja git dan semua itu - jadi itu berarti Anda benar-benar perlu memiliki server, menjalankan git, tersedia di jaringan Anda (LAN atau Internet atau apa pun). Jika demikian, hal ini akan memperumit penyiapan, dan juga membuatnya kurang fleksibel, karena Anda tidak dapat menyimpan file offline yang independen dan modular.

Saya menghabiskan sedikit waktu membaca dokumentasi, dan menurut saya alur kerjanya agak rumit. Mungkin saya melewatkan sesuatu yang sangat jelas, tetapi saya juga percaya pada kesederhanaan yang cukup jelas dari perangkat lunak yang hebat. Fakta bahwa saya tidak langsung mengalami pengalaman luar biasa, tidak ada pertanyaan yang diajukan, berarti ini adalah solusi dengan pola otak yang berbeda - dan karenanya perlu - untuk saya.

Homeshick

Anda mungkin berpikir ini adalah perangkat lunak pencadangan berbasis git favorit Sean Connery, tetapi leluconnya ada pada Anda, ha ha! Ini adalah versi skrip shell dari perangkat lunak sinkronisasi dotfiles Homesick berbasis Ruby yang sekarang tidak digunakan lagi. Sifat BASH-ful dari alat ini seharusnya membuatnya mudah untuk dikonfigurasi dan digunakan.

Saya mengikuti instruksi, dan memang, pengaturannya sepele. Tetapi Anda juga perlu menambahkan sumber skrip ke akhir file .bashrc Anda di direktori home Anda, jika tidak, Anda harus menggunakan path lengkap yang tepat untuk menjalankan alat.

Sekarang, Homeshick bekerja dengan menggabungkan git dengan symlinking. Pada dasarnya, file apa pun yang Anda tambahkan kemudian akan disinkronkan ke repo Anda. Yang menimbulkan pertanyaan, apa yang terjadi jika Anda ingin "menghapus" file? Bagaimanapun, repo sebenarnya disebut kastil (defaultnya adalah CASTLE).

homeshick
homeshick menggunakan git bersama dengan symlink untuk melacak dotfile berharga Anda.

Kegunaan:homeshick [opsi] TUGAS

Tugas:
homeshick cd CASTLE # Masuk ke kastil
homeshick clone URI.. # Klon URI sebagai kastil untuk homeshick
homeshick menghasilkan CASTLE.. # Membuat repo kastil

Namun, petunjuknya tidak cukup jelas - jika Anda langsung menjalankan perintah pertama, Anda akan mendapatkan kesalahan:

homeshick cd CASTLE
bash:cd:/home/roger/.homesick/repos/CASTLE:Tidak ada file atau direktori seperti itu

Script tidak memeriksa apakah ada repo, jadi tidak akan memperingatkan Anda bahwa Anda perlu membuatnya. Ini bukan masalah besar, tetapi sebenarnya tidak ada alasan mengapa tidak ada pengaturan default yang ramah, atau setidaknya peringatan agar pengguna dapat mengatasinya.

homeshick menghasilkan CASTLE
menghasilkan CASTLE


Memulai dll

daftar homeshick
CASTLE
homeshick https://github. com/andsens/homeshick.git

Melihat daftar repo yang ada, milik penulis juga ada. Bagaimanapun, saya terus menggunakan skrip. Pada dasarnya, ini adalah pekerjaan manual. Anda menentukan repo dan file yang ingin Anda pindahkan ke dalamnya, yang kemudian akan disinkronkan di tempat yang benar, mis.:

homeshick track CASTLE ~/.profile ~/.gnupg
track .profile
track .gnupg/trustdb.gpg
track .gnupg/pubring.kbx

Langkah selanjutnya adalah melakukan perubahan, dan kemudian mendorong ke repo - membawa sifat online skrip ini, seperti YADM. Kecuali, tentu saja, Anda ingin menggunakan konfigurasi server Anda sendiri. Tidak sepele, dan saya harus berkonsultasi dengan dokumentasi. Anda akhirnya melakukan cd CASTLE, git commit, git Push , seluruh kesepakatan. Jadi, homeshick mengabstraksikan banyak perintah git (seperti cabang dan semacamnya). Saya menemukan ini sama membingungkannya dengan upaya saya sebelumnya, jadi saya kira perangkat lunak ini sebagian besar dirancang untuk pengembang.

Ada beberapa kesalahan aneh juga. Seperti penyegaran repo. Apa yang benar-benar lakukan? Bagaimana cara menentukan bahwa repo lokal sudah usang jika memang tidak memiliki hulu? Saya juga takut file saya entah bagaimana akan ditimpa, dan apa yang terjadi kemudian?

homeshick refresh
kastil CASTLE ketinggalan jaman
homeshick ketinggalan jaman
segarkan Kastil CASTLE,homeshick sudah ketinggalan zaman.
tarik? [yN]

tidak ada hulu Tidak dapat menarik CASTLE, tidak memiliki hulu
menarik homeshick

Kesimpulan

Otak saya jelas bukan seorang pengembang perangkat lunak - itulah sebabnya saya menemukan alat seperti git tidak ramah sama sekali. Rasanya seperti perangkat lunak yang berorientasi pada mesin daripada berorientasi pada manusia, dan terasa lebih berbelit-belit dari yang seharusnya. Demikian pula, YADM dan Homeshick tidak menganggap saya sebagai solusi ideal untuk pertanyaan konfigurasi direktori home. Jika saya perlu melakukan sesuatu secara manual, dan kemudian mengkomitnya ke cadangan (arsip), sebaiknya saya melakukannya dengan benar secara manual, dengan lebih banyak fleksibilitas dan kontrol.

Saya mengerti apa yang coba dipecahkan oleh kedua alat ini, dan memiliki pengaturan yang sepenuhnya disinkronkan dan berversi pada beberapa sistem adalah ide yang bagus (Anda dapat membuat skrip prosedur tarik dan dorong, semuanya berjalan dengan lancar di latar belakang), tetapi kedua program juga kutu buku, dan mereka harus memiliki konfigurasi awal yang lebih elegan dan pemeriksaan kesalahan yang lebih baik. Terakhir, ada pertanyaan tentang privasi. Apakah Anda benar-benar ingin memasukkan file penting ke dalam repo online begitu saja? Apakah Anda nyaman dengan tingkat keamanan, tingkat enkripsi - dan kemampuan Anda untuk membuat pengaturan yang ketat dan cerdas tanpa lubang konyol? Jadi untuk pencarian awal saya, saya pikir kesederhanaan rsync, tar dan gpg tetap menjadi solusi pilihan saya untuk cadangan direktori home. Tetapi jika Anda seorang git muda - dan bukan git tua seperti saya - maka Anda mungkin menyukai ini. Ini dia.


Linux
  1. Gunakan Setxkbmap Untuk Menukar Shift Kiri Dan Kontrol Kiri?

  2. Output Ke Stdout Dan Pada Saat Yang Sama Grep Ke File?

  3. Perbedaan Antara Tautan Simbolik dan Tautan Keras?

  1. Pengalihan Io Dan Perintah Kepala?

  2. Bagaimana Menemukan Jenis File Img Dan Memasangnya?

  3. Bagaimana cara mengambil string dalam direktori dan semua subdirektorinya?

  1. Temukan file dan direktori di Linux dengan perintah find

  2. Perbedaan Antara "du -sh *" Dan "du -sh ./*"?

  3. Bagaimana cara mengekstrak semua tautan eksternal halaman web dan menyimpannya ke file?