Backupscript för samlad kunskap
Postat: 02 mar 2021 09:40
Jag svängde ihop ett "backupscript för samlad kunskap" som kan vara bra för att få hem den nyaste offline-speglingen av Wikipedia (svensk & engelsk), gutenberg och en massa annat smått och gott (se filter-filen nedan)
Det går att öppna filerna tex med programmet Kiwix, som fungerar som en desktop-applikation för en lokal spegel för .zib -filer. Programmet kan också dela ut spegeln som en webbsida på det lokala nätverket från exempelvis en raspberry pie (har inte testat kwix på raspberry pi men det borde inte vara något problem).
Det är tre filer som arbetar i ett flöde. Det fungerar i Linux med standardverktyg som bash och rsync, men bör också fungera i Windows med tex Git-Bash och rsync, eller i MacOS antar jag:
list-latest-zimfiles.sh - Laddar hem en lista på de senaste versionerna av alla tillgängliga zib-filer från download.kiwix.org/zim. Download-scriptet kör scriptet, så man behöver inte köra det själv.
fetch-filter.txt - Ett filter för att plocka ut vissa filer (annars får man tex hem en massa olika språk av wikipedia)
download-latest-zim.sh - Laddar hem en lista på de senaste filerna genom att köra list-latest-zimfiles.sh och spara ned i en fillista, filtrera ut matchande filnamn från fetch.filter, och laddar ned filen (om den inte redan ligger på disken).
Kör man bara scriptet rakt av så blir det 227 GB filer.
Det går att öppna filerna tex med programmet Kiwix, som fungerar som en desktop-applikation för en lokal spegel för .zib -filer. Programmet kan också dela ut spegeln som en webbsida på det lokala nätverket från exempelvis en raspberry pie (har inte testat kwix på raspberry pi men det borde inte vara något problem).
Det är tre filer som arbetar i ett flöde. Det fungerar i Linux med standardverktyg som bash och rsync, men bör också fungera i Windows med tex Git-Bash och rsync, eller i MacOS antar jag:
list-latest-zimfiles.sh - Laddar hem en lista på de senaste versionerna av alla tillgängliga zib-filer från download.kiwix.org/zim. Download-scriptet kör scriptet, så man behöver inte köra det själv.
Kod: Markera allt
#!/bin/bash
for ENTRY in `rsync --recursive --list-only \
download.kiwix.org::download.kiwix.org/zim/ | grep ".zim" | \
tr -s ' ' | cut -d ' ' -f5 | sort -r` ; do RADICAL=`echo $ENTRY | \
sed 's/_20[0-9][0-9]-[0-9][0-9]\.zim//g'`; if [[ $LAST != $RADICAL \
]] ; then echo $ENTRY ; LAST=$RADICAL ; fi ; done
Kod: Markera allt
gutenberg/gutenberg_en_all
gutenberg/gutenberg_sv_all
other/proofwiki_en_all_maxi
other/wikispecies_en_all_maxi
other/wikiwel_en_all_maxi
stack_exchange/3dprinting
stack_exchange/ai.stackexchange
stack_exchange/android.stackexchange
stack_exchange/arduino.stackexchange
stack_exchange/askubuntu.com
stack_exchange/aviation
stack_exchange/beer
stack_exchange/bicycles
stack_exchange/bioinformatics
stack_exchange/biology
stack_exchange/bitcoin
stack_exchange/chemistry
stack_exchange/crypto
stack_exchange/datascience
stack_exchange/devops
stack_exchange/engineering
stack_exchange/ethereum
stack_exchange/expatriates
stack_exchange/health
stack_exchange/history
stack_exchange/lifehacks
stack_exchange/martialarts
stack_exchange/matheducators
stack_exchange/mathematica
stack_exchange/opendata
stack_exchange/opensource
stack_exchange/productivity
stack_exchange/programmers
stack_exchange/raspberrypi
stack_exchange/security.stackexchange
stack_exchange/serverfault.com
stack_exchange/skeptics
stack_exchange/softwareengineering
stack_exchange/space
stack_exchange/startups
stack_exchange/sustainability
stack_exchange/travel.stackexchange
stack_exchange/unix.stackexchange.com
videos/aimhi_en_english
videos/aimhi_en_geography
videos/aimhi_en_hilights
videos/aimhi_en_hischool-biology
videos/aimhi_en_hischool-physics
videos/aimhi_en_science
videos/aimhi_en_what-is-cancer
videos/keylearning_en_art-express-yourself
videos/scienceinthebath_en_freshest-produce
vikidia/vikidia_en_all_maxi
wikibooks/wikibooks_en_all_maxi
wikibooks/wikibooks_sv_all_maxi
wikinews/wikinews_en_all_maxi
wikinews/wikinews_sv_all_maxi
wikipedia/wikipedia_en_all_maxi
wikipedia/wikipedia_sv_all_max
wikiquote/wikiquote_en_all_maxi
wikiquote/wikiquote_sv_all_maxi
wikisource/wikisource_en_all_maxi
wikisource/wikisource_sv_all_maxi
wikiversity/wikiversity_en_all_maxi
Kod: Markera allt
#!/bin/bash
ARCHIVE="download.kiwix.org/zim"
# Fetch the latest file versions
echo "Updating list.txt with latest files"
./list-latest-zimfiles.sh > list.txt
LATEST=$(cat list.txt)
cat ./fetch-filter.txt | while read line
do
# Checking for latest file version from the fetch filter
file=$(grep ${line} ./list.txt)
# Don't overwrite an existing file
basefile=$(basename ${file})
if [[ -f ${basefile} ]]
then
echo "${basefile}" already exists
else
echo wget ${ARCHIVE}/${file}
fi
done