Yksi taattu toimintatapani sivustojen, servereiden ja vahvasti myös oman reaalielämäni kanssa on, että en pidä toimintatavoistani kiinni. Tuo on kylläkin kateellisten panettelua ja aidosti kyse on vain siitä, että muutan toimintatapojani. Välillä jopa useamman kerran saman päivän aikana.
Urlien monimuotoisuus
WordPressin hostaamien podcastien kohdalla tuo tarkoittaa sitä, että audioiden tallennuspaikat ovat muuttuneet matkan varrella.
Ensin ne menivät Amazonin S3:een CDN:n ja CloudHostin kautta urlissa cdn.katiska.info
. Sitten linkitin niitä suoraan S3:sta käyttäen AWS:n hirviömäistä urlia. Jossain vaiheessa aloin tallentamaan mp3-tiedostoni WordPressin kautta paikallisesti. Ja viimeiset löysivät kotinsa Hetznerin S3:sta.
Käyttäjällehän on aivan se ja sama missä audiotiedostot ovat. Ei niiden lähde-url missään näy. Ylläpitäjälle moisen monimuotoisuuden hallitseminen sen sijaan on hieman työlästä — varsinkin tilanteessa, kun aikoo tehdä jonkinlaisen backupin tehdystä työstä. Puhumattakaan siitä hetkestä, kun muuttaa toimintatapojaan ja päättää, että tiedostot laitetaan keskitetysti yhteen paikkaan, ja se paikka ei ole Amazonin AWS.
Olen uhrannut muutamankin työpäivän verran opettelu- ja tekoaikaa, kun siirsin cdn.katiska.info
linkillä olevat Amazonissa olevat tiedostot Hetznerille. Sitten päätinkin, että niiden url on oltava nätimpi podcast.katiska.eu
.
Seuraavaksi tulikin mieleen, että pitäisi varmaan tehdä sama operaatio niille podcasteille, jotka ovat S3:n ”natiiveilla” linkeillä. Onneksi tuo oli enemmälti muutos edellisestä, joten työ meni lähes rutiinilla (ja vasta nyt tajusin, että olisin senkin saanut tehtyä kerralla valmiiksi pienellä muutoksella scriptiin).
Olin itseeni tyytyväinen. Mutta olin unohtanut ne paikalliset WordPressin kautta tehdyt lataukset. Ne piti vielä siivota.
WordPressistä Hetzneriin
Edellisissä siirroissa käytetyt työkalut eivät toimineet suoraan, koska WordPress ei ymmärrä aws cli:tä. Mutta WordPress ymmärtää omaa WP CLI:ään.
Ensin tarvitsin CSV:n siirrettävistä mp3-tiedostoista, jotka ovat podcast-pluginin Seriously Simple Podcast käytössä:
echo "id,title,audio_url" > podcast_audio_links.csv
for id in $(wp post list --post_type=post --post_status=publish --format=ids); do
url=$(wp post meta get "$id" audio_file 2>/dev/null)
if [ -n "$url" ] && echo "$url" | grep -qE 'wp-content/uploads'; then
title=$(wp post get "$id" --field=post_title | sed 's/"/""/g')
echo "\"$id\",\"$title\",\"$url\"" | tee -a podcast_audio_links.csv
fi
done
Jos CSV-listan artikkeliotsikoissa on pilkkuja, niin ne on syytä siivota pois. Jatkossa CSV:n käsittely epäonnistuu, jos löytyy ylimääräisiä pilkkuja.
Oletuksena on, että aws cli on annettu ja credentials
tiedostossa on Hetznerin API kerrottuna.
Sitten ajetaan tämä. Muuta tiedot itsellesi sopiviksi.
#!/bin/bash
# Asetukset
CSV_PATH="podcast_audio_links.csv"
LOCAL_BASE="/var/www/html/wp-content/uploads"
HETZNER_BUCKET="kaffepaussi"
HETZNER_ENDPOINT="podcastit.hel1.your-objectstorage.com"
CDN_DOMAIN="podcast.katiska.eu"
# AWS CLI -profiili (oletetaan että konfiguroitu Hetznerille)
AWS_PROFILE="hetzner"
# Otsikko ohitetaan
tail -n +2 "$CSV_PATH" | while IFS=',' read -r id title url; do
# Poistetaan mahdolliset lainausmerkit
id=$(echo "$id" | tr -d '"')
title=$(echo "$title" | tr -d '"')
url=$(echo "$url" | tr -d '"')
# Haetaan tiedostonimi ja suhteellinen polku
filename=$(basename "$url")
relative_path="${url#https://www.katiska.eu/wp-content/uploads/}"
local_path="$LOCAL_BASE/$relative_path"
if [[ ! -f "$local_path" ]]; then
echo "❌ Tiedostoa ei löydy: $local_path"
continue
fi
# Siirretään S3:een
echo "🔼 Siirretään: $filename"
aws --profile "$AWS_PROFILE" --endpoint-url "https://$HETZNER_ENDPOINT" \
s3 cp "$local_path" "s3://$HETZNER_BUCKET/$filename" || {
echo "❌ Siirto epäonnistui: $filename ($url)"
continue
}
# Muodostetaan uusi URL ja päivitetään WordPress
new_url="https://$CDN_DOMAIN/$HETZNER_BUCKET/$filename"
echo "🔁 Päivitetään: $id → $new_url"
wp --allow-root post meta update "$id" audio_file "$new_url" >/dev/null
done
Käytä tmuxia tai screeniä. Tuo kestää hieman kauan.
Se oli sitten siinä. Nyt paikalliset on siirretty Hetznerille ja WordPressiin linkit on korjattu.
Tuo ei poista paikallisia tiedostoja. Koodaustaidoillani en uskaltanut tehdä sitä. Joten poista shellissä tai helpommin WordPressin mediakirjaston kautta vapauttaaksesi levytilaa.
Keskustele foorumilla Katiskan foorumi