Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.
Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).
Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.
Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.
Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.
NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.
IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.
Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.
Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Řešení dotazu:
rsync --link-dest
, nebo rsync + btrfs snapshoty.
Co záloha, to adresář pojmenovaný podle data zálohy. Deduplikace pak probíhá buď pomocí hardlinků (proti předchozí záloze), nebo pomocí snapshotů (rsync aktualizuje zapisovatelný adresář a toho se pak udělá snapshot).
Pokud by někdo měl tip na dobrý nástroj pro odstraňování starých záloh, sem s ním prosím. Už několik let se chystám ho napsat. :)
dela deduplikaci na urovni filesystemu (!!! tedy dosahuje tehoz efektu tim, ze na fs zavisly neni a ma nejaky vlastni format ulozeni dat v adresarich, ale vysledkem je deduplikace v ramci repository - a dela to fakt hodne dobre! protoze jsem zkousel deduplikacni fs a byly s tim ruzne potize a ruzne podminky, ale tohle tim netrpi!),To právě deduplikace na úrovni filesystému není. To je aplikační úroveň, tedy o úroveň výš. Kdyby to bylo na úrovni filesystému, tak vidíš všechny zálohy rovnou bez jakýchkoliv zvláštních nástrojů a připojování.
Tohle je asi tak nejtypičtější možný příklad na snapshoty v Btrfs nebo ZFS. Přírůstkové, čitelné, ba dokonce i zapisovatelné, atomické, postupně „ředitelné“, jak plyne čas, atd.
Žádný program na přírůstkové zálohy neexistuje a nikdy neexistoval (navzdory četným fámám o opaku), protože takové zálohy z principu nejsou atomické. Aby byla záloha atomická v rámci nějaké adresářové (pod)struktury nebo celého filesystému, je potřeba mít snapshoty na úrovni fileystému, tedy kernelu.
Algořiťmus pro zálohování mezi dvěma filesystémy (ideálně geograficky oddělenými, jak jinak):
#!/bin/bash mv /.snapshots_root/root/ /.snapshots_root/root-old mv /media/data/.snapshots_root_backup/root/ /media/data/.snapshots_root_backup/root-old btrfs subvolume snapshot -r / /.snapshots_root/root && sync btrfs send -p /.snapshots_root/root-old/ /.snapshots_root/root | btrfs receive /media/data/.snapshots_root_backup/ btrfs subvolume delete /.snapshots_root/root-old/ btrfs subvolume delete /media/data/.snapshots_root_backup/root-olda do ted jsem ten snapshot pomocí rsnapshot posílal přírůstkově na NAS a docela spokojenost. Jen postupem času začal adresář na NASu narůstat víc než se mi líbí. Tak hledám variantu
Já si napsal bash skript co posílá btrfs snapshoty (send/receive) přes SSH. Je to navržené na to, aby se to spouštělo automaticky vždy v 23:59. Všechny snapshoty jsou na cílovém zařízení normálně přístupné. Tak třeba se to bude hodit.
#!/bin/bash ################# ### Nastavení ### ################# #Adresáře k zálohování cesta_mistni="/srv" adresare=("http" "mysql" "nextcloud") cesta_snapshoty="/srv/.backup_increment" cesta_vzdalena="/srv/backup/" historie="30" server="***.***.***.***" klic="/root/BackupKey" ############## ### Funkce ### ############## #Vytvoření snapshotu vytvor_snapshot() { btrfs subvolume snapshot -r "${cesta_mistni}/$1" "${cesta_snapshoty}/$1_$datum" if [ $? == 0 ]; then return 0 else return 1 fi } #Odeslání snapshotu odesli_snapshot() { if [ -d "${cesta_snapshoty}/$1" ] && [ ssh "backup@${server}" -i "$klic" "[ -d ${cesta_vzdalena}/$1/$1_${datum_vcera} ]" ]; then btrfs send -p "${cesta_snapshoty}/$1" "${cesta_snapshoty}/$1_$datum" | ssh "backup@$server" -i "$klic" "sudo btrfs receive \"${cesta_vzdalena}/$1\" && \ sudo btrfs property set -ts \"${cesta_vzdalena}/$1/$1_$datum\" ro false && \ sudo touch -d \"$datum_touch\" \"${cesta_vzdalena}/$1/$1_$datum\" && \ sudo btrfs property set -ts \"${cesta_vzdalena}/$1/$1_$datum\" ro true" if [ $? == 0 ]; then return 0 else return 1 fi else if ssh "backup@$server" -i "$klic" "[ ! -d ${cesta_vzdalena}/$1 ]" then ssh "backup@$server" -i "$klic" "mkdir ${cesta_vzdalena}/$1" fi btrfs send "${cesta_snapshoty}/$1_$datum" | ssh "backup@$server" -i "$klic" "sudo btrfs receive \"${cesta_vzdalena}/$1\" && \ sudo btrfs property set -ts \"${cesta_vzdalena}/$1/$1_$datum\" ro false && \ sudo touch -d \"$datum_touch\" \"${cesta_vzdalena}/$1/$1_$datum\" && \ sudo btrfs property set -ts \"${cesta_vzdalena}/$1/$1_$datum\" ro true" if [ $? == 0 ]; then return 0 else return 1 fi fi } #Smazání snapshotu smaz_snapshot() { if [ -d "${cesta_snapshoty}/${1}_${datum_vcera}" ]; then btrfs subvolume delete "${cesta_snapshoty}/${1}_${datum_vcera}" fi if [ $? == 0 ]; then return 0 else return 1 fi } #Přejmenování snapshotu prejmenuj_snapshot() { mv "${cesta_snapshoty}/$1_$datum" "${cesta_snapshoty}/$1" if [ $? == 0 ]; then return 0 else return 1 fi } #Smazání starých záloh smaz_stare() { ssh "backup@$server" -i "$klic" "find \"${cesta_vzdalena}/$1\" -maxdepth 1 -type d -mtime \"+$((historie-1))\" -exec sudo btrfs subvolume delete {} \;" } ############## ### SKRIPT ### ############## #Aktuální datum datum="$(date '+%Y-%m-%d')" datum_vcera="$(date '+%Y-%m-%d' -d 'yesterday')" datum_touch="$(date '+%Y-%m-%d %H:%M' -d 'today 23:59')" #Vytvoření snapshotů pododdílů for adresar in ${adresare[@]} do vytvor_snapshot $adresar done #Odeslání snapshotů do zálohovacího zařízení přes SSH for adresar in ${adresare[@]} do odesli_snapshot $adresar done ##Smazání minulých snapshotů pododdílů for adresar in ${adresare[@]} do smaz_snapshot $adresar done #Přejmenování posledních snapshotů for adresar in ${adresare[@]} do prejmenuj_snapshot $adresar done ##Smazání starých vzdálených záloh for adresar in ${adresare[@]} do smaz_stare $adresar done exit 0
Tiskni Sdílej: