Backupscript för samlad kunskap

Användarvisningsbild
entropi
Inlägg: 581
Blev medlem: 06 maj 2019 05:32

Backupscript för samlad kunskap

Inlägg av entropi »

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.

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
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)

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
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).

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
Kör man bara scriptet rakt av så blir det 227 GB filer.
You have the watches but we have the time
Användarvisningsbild
entropi
Inlägg: 581
Blev medlem: 06 maj 2019 05:32

Re: Backupscript för samlad kunskap

Inlägg av entropi »

entropi skrev:
02 mar 2021 09:40
echo wget ${ARCHIVE}/${file}
Jag ser att jag glömt en debug-funktion. Ta bort echo:

Kod: Markera allt

wget ${ARCHIVE}/${file}
You have the watches but we have the time
Fotogenmannen
Inlägg: 47
Blev medlem: 18 maj 2019 18:39

Re: Backupscript för samlad kunskap

Inlägg av Fotogenmannen »

Trevligt initiativ! Scripten fungerar utmärkt. Jag kan tipsa om "--limit-rate"-flaggan man kan ge till wget om man inte vill sänka sin uppkoppling helt.

Dvs byt
wget ${ARCHIVE}/${file}
mot
wget --limit-rate 5M ${ARCHIVE}/${file}

för att begränsa hastigheten till i detta fall 5 Mbytes per sekund, ungefär hälften av en 100 Mbit/s uppkoppling.
Skriv svar