Berikan git
kesempatan
Saya tidak mengerti mengapa menggunakan alat yang ampuh merupakan masalah. Cukup tulis skrip bash sederhana yang menjalankan git
berkala (melalui cron
atau systemd
pengatur waktu); buat pesan komit secara otomatis, dll.
Seperti yang disorot orang lain dalam komentar, tentu saja - dimungkinkan untuk membuat repositori lokal (lihat di sana-sini untuk detail lebih lanjut).
Jika Anda lebih suka menghosting repo jarak jauh Anda sendiri, Anda harus menyiapkan "Bare Repository". Keduanya
git init
dangit clone
terima--bare
argumen.
Borg backup
Saya juga dapat merekomendasikan cadangan borg. Ini menawarkan Anda:
- Stempel waktu
borg diff
(bandingkan antar snapshot)- Pemangkasan (singkirkan snapshot lama - katakanlah Anda ingin snapshot untuk bulan ini setiap hari tetapi sebaliknya hanya satu per bulan)
- Enkripsi (opsional)
- Kompresi (opsional)
- dan banyak lagi...
Kerennya, ini sangat fleksibel - mudah disiapkan tetapi memberi Anda banyak opsi jika Anda mau.
Saya pernah menulis panduan memulai cepat yang mungkin bisa membantu.
Ada beberapa cara yang dapat Anda lakukan:
- Vim
- Emacs
- Git
- Alat Bash/Eksternal
- Git-annex (solusi lengkap)
Yang semuanya dirinci di sini:
- Jika Anda ingin melakukan ini di Vim:
Maka saya akan merekomendasikan menggunakan undo history, yang tidak hanya (seperti namanya) berhubungan dengan tindakan undo
melakukan tindakan di editor Vim, tetapi juga yang Anda simpan juga. Selengkapnya di sini.
Menambahkan yang berikut ke .vimrc
Anda :
let vimDir = '$HOME/.vim'
let &runtimepath.=','.vimDir
" Keep undo history across sessions by storing it in a file
if has('persistent_undo')
let myUndoDir = expand(vimDir . '/undodir')
" Create dirs
call system('mkdir ' . vimDir)
call system('mkdir ' . myUndoDir)
let &undodir = myUndoDir
set undofile
endif
Akan membuatnya sehingga setiap perubahan/pembatalan akan disimpan secara permanen di bawah direktori undodir
di bawah vimDir
lokal Anda , yang secara default adalah .vim
di direktori home Anda, atau yang lain yang disebutkan di output :version
atau --version
pada baris perintah.
Untuk lebih mengontrol riwayat pengurungan Anda, sebaiknya gunakan juga Undotree untuk melengkapi pengalaman.
- Jika Anda berencana melakukan ini di Emacs:
Ada paket bernama serupa yang disebut Undotree, yang melakukan hal serupa. Informasi lebih lanjut tentang Urungkan riwayat di sini.
- Jika Anda lebih suka
Git
solusi:
Saya akan merekomendasikan menggunakan git-autocommit, yang merupakan skrip bash kecil, dengan git karena hanya dependensi, yang melihat direktori git saat ini (tempat Anda meluncurkannya) untuk file baru/atau file yang dimodifikasi, dan komit.
Mengingat sifat dari Git
itu menyimpan setiap perubahan pada file, dan meskipun tidak cocok untuk produksi/proyek serius, ini adalah solusi yang berguna jika Anda tidak keberatan tidak memiliki pesan komit/pesan komit umum (yang selalu dapat Anda edit/tambahkan nanti).
Luncurkan setelah menavigasi di direktori want git (yang pertama kali dibuat dengan git init
pada direktori tertentu, info lebih lanjut tentang manual resmi) seperti:
screen -dmS namehere git-autocommit -i 1 -V
jika Anda menggunakan screen
, untuk tmux
:
tmux new -n namehere git-autocommit -i 1 -V
jika tidak:
git-autocommit -i 1 -V
akan cukup jika Anda memilih untuk tidak menjadikannya latar belakang.
- Jika Anda lebih suka
Bash
solusi:
Saya akan merekomendasikan menggunakan inotify-tools
atau lebih tepatnya inotifywatch
yang dapat mendeteksi dan (seperti namanya) melihat file/direktori untuk perubahan, yang kemudian dapat Anda lakukan tindakan terhadapnya (seperti menyimpannya di tempat lain, dll).
Di sini bendera untuk digunakan dengan inotifywatch
:
inotifywait -r -m -q -e close_write --format %w%f yourdirectorypathhere
dan ini contoh Bash
skrip menggunakan yang di atas:
#!/bin/bash
inotifywait -r -m -q -e close_write --format %w%f directorytowatch | while IFS= read -r file; do
process $file
done
Dimana process
bisa apa saja yang Anda inginkan, seperti tar
jika Anda ingin membuat cadangan pada modifikasi file, atau dengan rclone
jika Anda ingin mengunggahnya di suatu tempat...
- Jika Anda menginginkan solusi menyeluruh:
Saya akan merekomendasikan git-annex
yang tidak hanya mencakup Git
tetapi banyak alat eksternal lainnya, seperti inotify-tools
, bash
, tar
, rclone
, borg
dll.
Info lebih lanjut di sini.
Jika Anda ingin membaca wiki/forum nanti, Anda juga dapat mengkloningnya secara lokal, untuk membaca offline:
git clone git://git-annex.branchable.com
untuk situs web, forum (semuanya dalam penurunan harga, jadi sangat cepat untuk mengunduh...), dan basis kode (ada di Haskell!) dll
Pendekatan lain, yang akan mencakup semua file dalam sistem file tertentu, adalah menggunakan sistem file berstruktur log seperti NILFS.
Sistem file seperti itu menambahkan perubahan, mereka tidak mengganti data. Ini secara efektif setara dengan snapshot terus menerus (atau lebih tepatnya, checkpointing), dan memungkinkan Anda untuk mengunjungi kembali sistem file di berbagai titik di masa lalu. Pos pemeriksaan yang lebih lama cenderung menjadi sampah yang dikumpulkan setelah mencapai usia tertentu, tetapi pos pemeriksaan dapat diubah menjadi snapshot permanen, dan dimungkinkan untuk mengotomatiskannya, misalnya menyimpan satu snapshot per jam selama sebulan terakhir, lalu satu per hari selama enam bulan, lalu satu per minggu, dll.
NILFS didukung dengan baik di Linux dan cukup efektif bila digunakan untuk /home
.