Zadejte git
šance
Nechápu, proč je problém používat mocný nástroj. Stačí napsat jednoduchý bash skript, který spustí git
pravidelně (prostřednictvím cron
nebo systemd
časovače); automaticky generovat zprávy potvrzení atd.
Jak jiní zdůraznili v komentářích, je samozřejmě možné vytvořit místní úložiště (více podrobností zde a tam).
Pokud dáváte přednost hostování vlastního vzdáleného repozitáře, budete muset nastavit „holé úložiště“. Oba
git init
agit clone
přijmout--bare
argument.
Borg záloha
Mohu také doporučit borg backup. Nabízí vám:
- Časová razítka
borg diff
(porovnání mezi snímky)- Prořezávání (zbavte se starších snímků – řekněme, že chcete snímek za aktuální měsíc každý den, ale jinak pouze jeden za měsíc)
- Šifrování (volitelné)
- Komprese (volitelné)
- a mnohem více...
Skvělé je, že je velmi flexibilní – snadno se nastavuje, ale pokud chcete, nabízí vám spoustu možností.
Jednou jsem napsal průvodce rychlým startem, který by mohl pomoci.
Existuje několik způsobů, jak to udělat:
- Vim
- Emacs
- Git
- Bash/Externí nástroj
- Git-annex (řešení vše v jednom)
Všechny jsou podrobně popsány zde:
- Pokud to chcete provést ve Vimu:
Pak bych doporučil použít historii vrácení zpět, která se nejen (jak název napovídá) týká aktu undo
akci v editoru Vim, ale také tu, kterou uložíte. Více zde.
Přidání následujícího do vašeho .vimrc
:
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
Udělá to tak, že všechny změny/vracení budou trvale uloženy v adresáři undodir
pod vaším místním vimDir
, což je ve výchozím nastavení buď .vim
ve vašem domovském adresáři nebo v jiných adresářích uvedených ve výstupu :version
nebo --version
na příkazovém řádku.
Pro ještě větší kontrolu nad vaší historií vracení doporučuji také použít Undotree k doplnění zážitku.
- Pokud to plánujete na Emacsu:
Existují podobně pojmenované balíčky s názvem Undotree, které dělají podobné věci. Další informace o historii vrácení zpět zde.
- Pokud dáváte přednost
Git
řešení:
Doporučil bych použít git-autocommit, což je malý bash skript, s git, protože jsou to pouze závislosti, které sledují aktuální adresář git (kde jej spouštíte) pro případné nové soubory/nebo upravené soubory, a odevzdávají je.
Vzhledem k povaze Git
uchovává všechny změny v souboru, a přestože by nebyl vhodný pro produkční/seriózní projekt, je to užitečné řešení, pokud vám nevadí, že nemáte zprávu o odevzdání / obecnou zprávu o odevzdání (kterou můžete vždy upravit/přidat později).
Spusťte jej po navigaci v požadovaném adresáři git (který je nejprve vytvořen pomocí git init
na konkrétním adresáři, více informací v oficiálním manuálu) takto:
screen -dmS namehere git-autocommit -i 1 -V
pokud používáte screen
, pro tmux
:
tmux new -n namehere git-autocommit -i 1 -V
jinak:
git-autocommit -i 1 -V
bude stačit, pokud ji nechcete na pozadí.
- Pokud dáváte přednost
Bash
řešení:
Doporučuji použít inotify-tools
nebo přesněji inotifywatch
který dokáže detekovat a (jak už název napovídá) sledovat změny v souboru/adresáři, se kterými pak můžete provést akci (např. uložit někam jinam atd.).
Zde příznak, který se má použít s inotifywatch
:
inotifywait -r -m -q -e close_write --format %w%f yourdirectorypathhere
a zde příklad Bash
skript pomocí výše uvedeného:
#!/bin/bash
inotifywait -r -m -q -e close_write --format %w%f directorytowatch | while IFS= read -r file; do
process $file
done
Kde process
může být cokoli, co chcete, například tar
pokud chcete provést zálohu při změně souboru nebo pomocí rclone
pokud to chcete někam nahrát...
- Pokud chcete řešení typu vše v jednom:
Doporučil bych git-annex
které nezahrnují pouze Git
ale mnoho dalších externích nástrojů, jako je inotify-tools
, bash
, tar
, rclone
, borg
atd.
Více informací zde.
Pokud si budete chtít přečíst wiki/fórum později, můžete je také git naklonovat lokálně pro offline čtení:
git clone git://git-annex.branchable.com
pro web, fórum (vše je v markdown, takže se to stahuje velmi rychle...) a kódovou základnu (je v Haskell!) atd
Dalším přístupem, který pokryje všechny soubory v daném souborovém systému, je použití souborového systému se strukturou log, jako je NILFS.
Takové systémy souborů připojují změny, nenahrazují data. To je v podstatě ekvivalent nepřetržitého snímkování (nebo spíše kontrolního bodu) a umožňuje vám znovu navštívit souborový systém na různých místech v minulosti. U starších kontrolních bodů je pravděpodobné, že budou shromažďovány odpadky, jakmile dosáhnou určitého věku, ale kontrolní body lze přeměnit na trvalé snímky a je možné to automatizovat, například tak, aby se za poslední měsíc uchovával jeden snímek za hodinu a poté jeden za den. po dobu šesti měsíců, poté jednou týdně atd.
NILFS je v Linuxu dobře podporován a je docela efektivní při použití pro /home
.