Alle aktuellen Podcasts ins SyncFolder Hardlinken


(Christian Müller) #1

Podcasts in einem Ordner als Hardlinks bereithalten, die ein anderes Script dann jeweils per rsync während dem Ladevorgang auf meinen MP3 Player in den Podcast Ordner wirft.

Die Podcasts sind bereits auf dem Rechner vorhanden. Heruntergeladen werden sie mit Podget per Cronjob. Wenige Minuten nach diesem läuft dann das folgende Script, irgendwann später steck ich den Player zum Laden an, er wird gemountet, es gibt nen rsync -> unmount -> Akku laden, morgens dann geladen und befüllt.

#!/bin/bash
#rm -rf "/data/MCP/SanSync/Podcast/WRINT/WRINT Alle/"
#mkdir "/data/MCP/SanSync/Podcast/WRINT/WRINT Alle/"

Podcasts="/data/MCP/Podcast/"
Sync="/data/MCP/SanSync/Podcast/"
days=30

PCs[0]="WRINT/WRINT_Alle"
PCs[1]="Favoriten/CRE"
PCs[2]="Favoriten/FreakShow"
PCs[3]="Favoriten/Logbuch_Netzpolitik"
PCs[4]="Favoriten/Alternativlos"
PCs[5]="Favoriten/SuS"
PCs[6]="Musik/DrumAndBassArena"
PCs[7]="Musik/UKFMusic"
PCs[8]="Wissenschaft/Minkorrekt"
PCs[9]="Wissenschaft/WRINT_Wissenschaft"
PCs[10]="Wissenschaft/Resonator"
PCs[11]="Wissenschaft/Sternengeschichten"
PCs[12]="Wissenschaft/Forschung_aktuell"
PCs[13]="Favoriten/NSFW"
PCs[14]="Radio/Feature-Deutschlandfunk"
PCs[15]="Alle/Chaosradio"

for pc in "${PCs[@]}"
do
	xsrc="$Podcasts$pc"
	xdst="$Sync$pc"
	echo
	#echo
	echo Podcast $pc
	#echo Source: $xsrc
	#echo Destination: $xdst
	#echo Lösche alten Kram.
	#echo
	if [ -d "$xdst" ]
	then
		vorher=`find "$xdst" | grep -v ".AppleDouble"`
		vorher_count=`find "$xdst" | grep -c"" -v ".AppleDouble"`
		echo rm -rf "$xdst/*" | sh
		#mkdir "$xdst"
		echo $xdst
	else
		vorher=Null
		echo Erstes Mal. Muss $xdst anlegen.
		mkdir "$xdst"
	fi
	find "$xsrc" -name "*.mp3" -mtime -$days -printf "%T+\t§%p\n" \
	| grep -v ".AppleDouble" \
	| sort -r \
	| awk -v xdst="$xdst" -v pc="$pc" -F"§" '{print "ln \""$2"\" \""xdst"/\""}' | sh
	nachher=`find "$xdst" | grep -v ".AppleDouble"`
	nachher_count=`find "$xdst" | grep -c"" -v ".AppleDouble"`
	echo $pc fertig. Neue Folgen:
	echo --- Neu: ---
	diff <(echo "$vorher") <(echo "$nachher") && echo --- Ende ---
	echo Gesamt: $nachher_count / $vorher_count
done

Dieses Script läuft per Cronjob alle 8h.
Die Befüllung meines MP3 Players erfolgt dann durch ein beherztes

rsync -avb --size-only --delete --update /Volumes/MCP/SanSync/Podcast/ /Volumes/SD-MEDIA/Podcasts/SanSync


(Christian Müller) #2

Zum Thema rsync: http://www.linux-magazin.de/Ausgaben/2004/09/Unwetterzentrale


(Christian Müller) #3

Läuft gut, …


(Christian Müller) #4

Jetzt mailt mir mein Server auch jeweils ne Übersicht, wenns was neues gibt

Regulär sieht das dann so aus:

1a2
> └── xyz.mp3
108c109
< 0 directories, 89 files
---
> 0 directories, 90 files

-------------------------------
N E U E   P O D C A S T S ! ! !
-------------------------------

     1	Alle/Chaosradio
     2	└── xyz.mp3
     3	Alle/Der-Lautsprecher/
     4	Alle/Fokus_Europa/

Also erst ein Diff, was sich geändert hat und anschliessend eine nummerierte Auflistung der vorhandenen Files.

/data/MCP/SanSync/
├── DiffDaily.sh
├── Podcast
│   ├── Alle
│   │   ├── Chaosradio
│   │   ├── Der-Lautsprecher
│   │   ├── Fokus_Europa
│   │   │   ├── fe012-der-balkan-und-europa.mp3
│   │   │   ├── fe013-europa-in-bewegung.mp3
│   │   │   └── fe014-die-tuerkei-und-europa.mp3
│   │   ├── Hoaxilla
│   │   └── Metaebene-meta
│   ├── Favoriten
│   │   ├── Alternativlos
│   │   ├── CRE
│   │   │   ├── cre208-neuronale-netze.mp3
│   │   │   ├── cre209-das-linux-system.mp3
│   │   │   └── cre210-die-jagd.mp3
│   │   ├── FreakShow
│   │   │   ├── fs164-die-sendung-ohne-maus.mp3
│   │   │   ├── fs165-skandal-im-sperrbezirk.mp3
│   │   │   ├── fs166-schleifenlaengenvergleich.mp3
│   │   │   └── fs167-hacker-nr-5.mp3
│   │   ├── Logbuch_Netzpolitik
│   │   │   ├── lnp157-ich-habe-den-flux-kompensator-falsch-eingestellt.mp3
│   │   │   ├── lnp158-teilweise.fundamentalistisch.mp3
│   │   │   ├── lnp159-das-gesetz-verstoesst-gegen-die-geheimdienste.mp3
│   │   │   ├── lnp160-krisennummer.mp3
│   │   │   ├── lnp161-viel-mehr-tele.mp3
│   │   │   ├── lnp162-einseitige-freistellung.mp3
│   │   │   └── lnp163-die-teenage-nerds-von-nebenan.mp3
│   │   ├── NSFW
│   │   │   └── nsfw093-barschwund.mp3
│   │   └── SuS
│   │       ├── 4e3ae839-44ad-4745-9d65-148113a8df29_56b5d096-271e-47bf-8010-7be64d3ed06a.mp3
│   │       ├── 578cbdb7-89aa-4347-9933-333c8c8a8580_916a2323-a68b-4ae2-a936-d97198b0be69.mp3
│   │       ├── 73f987e8-65d5-49d7-9b1b-4079f07201aa_706119cc-93c4-46cc-9a4c-df79a483bbeb.mp3
│   │       ├── zh_20151018_175900.mp3
│   │       ├── zh_20151025_175400.mp3
│   │       ├── zh_20151101_175800.mp3
│   │       ├── zh_20151108_160000.mp3
│   │       └── zh_20151122_175900.mp3
│   ├── Hoerspiele
│   │   └── RadioTatort
│   │       └── rotewasser.12844s.mp3
│   ├── Klassik
│   │   └── SR2-AufnahmeDesMonats
│   │       ├── 2015-11-04_aufnahme_des_monats_november.mp3
│   │       └── 2015-12-03_podcast_aufnahme_dezember_2015_bruckner_erinnerung.mp3
│   ├── Musik
│   │   ├── DrumAndBassArena
│   │   └── UKFMusic
│   │       └── UKF_Music_Podcast_-_072_High_Contrast.mp3
│   ├── Radio
│   │   ├── DieSondersendung
│   │   ├── EinschlafenPodcast
│   │   │   ├── ep0352.mp3
│   │   │   ├── ep0353.mp3
│   │   │   ├── ep0354.mp3
│   │   │   ├── ep0355.mp3
│   │   │   └── ep0356.mp3
│   │   └── Feature-Deutschlandfunk
│   │       ├── dlf_20151016_1915_0887ce82.mp3
│   │       ├── dlf_20151018_2005_b5925b57.mp3
│   │       ├── dlf_20151020_1915_90764522.mp3
│   │       ├── dlf_20151020_1916_4b4b4a09.mp3
│   │       ├── dlf_20151023_2010_a0b266b2.mp3
│   │       ├── dlf_20151025_2005_a04c9571.mp3
│   │       ├── dlf_20151027_1915_93ab38ed.mp3
│   │       ├── dlf_20151030_2010_cb199410.mp3
│   │       ├── dlf_20151101_2006_f68f46e0.mp3
│   │       ├── dlf_20151103_1915_b91a5886.mp3
│   │       ├── dlf_20151106_1915_289983c8.mp3
│   │       ├── dlf_20151106_1922_9b09cbe7.mp3
│   │       ├── dlf_20151106_2010_8e792bac.mp3
│   │       ├── dlf_20151110_1915_266e9c8a.mp3
│   │       ├── dlf_20151113_2014_1f96310f.mp3
│   │       ├── dlf_20151113_2015_da964619.mp3
│   │       ├── dlf_20151113_2016_d6965d23.mp3
│   │       ├── dlf_20151113_2017_de967229.mp3
│   │       ├── dlf_20151113_2018_68968736.mp3
│   │       ├── dlf_20151115_2006_a5105444.mp3
│   │       ├── dlf_20151117_1915_9cb1a56a.mp3
│   │       ├── dlf_20151120_1915_f27d7983.mp3
│   │       ├── dlf_20151120_2010_d88d049e.mp3
│   │       ├── dlf_20151122_2005_37cacdc9.mp3
│   │       ├── dlf_20151124_1915_2e229a7f.mp3
│   │       ├── dlf_20151127_2010_4235a712.mp3
│   │       ├── dlf_20151129_2005_3f39df66.mp3
│   │       ├── dlf_20151201_1915_d075672b.mp3
│   │       ├── dlf_20151204_1915_242120c8.mp3
│   │       ├── dlf_20151204_2010_c3dbfb57.mp3
│   │       ├── dlf_20151206_2005_e644f95e.mp3
│   │       ├── dlf_20151208_1915_00163ac8.mp3
│   │       ├── dlf_20151211_2010_16cd0e5f.mp3
│   │       └── dlf_20151213_2005_fd39504d.mp3
│   ├── Wissenschaft
│   │   ├── Forschergeist
│   │   │   └── fg022-hochschullehre-digital.mp3
│   │   ├── Forschung_aktuell
│   │   │   ├── dlf_20151016_1635_17389e62.mp3
│   │   │   ├── dlf_20151019_1635_41b5790d.mp3
│   │   │   ├── dlf_20151020_1635_96d124ae.mp3
│   │   │   ├── dlf_20151021_1635_bb05ac43.mp3
│   │   │   ├── dlf_20151022_1635_ee268787.mp3
│   │   │   ├── dlf_20151023_1635_d458438d.mp3
│   │   │   ├── dlf_20151026_1635_e5f4a483.mp3
│   │   │   ├── dlf_20151027_1635_711b3831.mp3
│   │   │   ├── dlf_20151028_1635_e23e1d2a.mp3
│   │   │   ├── dlf_20151029_1635_d572d992.mp3
│   │   │   ├── dlf_20151030_1635_548fd20c.mp3
│   │   │   ├── dlf_20151102_1635_b7fd98d7.mp3
│   │   │   ├── dlf_20151103_1635_f528c5d6.mp3
│   │   │   ├── dlf_20151104_1635_825406c5.mp3
│   │   │   ├── dlf_20151105_1635_db6ffd55.mp3
│   │   │   ├── dlf_20151106_1635_199d9cdc.mp3
│   │   │   ├── dlf_20151109_1635_f90d9856.mp3
│   │   │   ├── dlf_20151110_1635_5b446160.mp3
│   │   │   ├── dlf_20151111_1635_966c4016.mp3
│   │   │   ├── dlf_20151112_1635_f98eb718.mp3
│   │   │   ├── dlf_20151113_1635_ada1807a.mp3
│   │   │   ├── dlf_20151116_1635_ff253703.mp3
│   │   │   ├── dlf_20151117_1635_c63bb269.mp3
│   │   │   ├── dlf_20151118_1635_c06aca6d.mp3
│   │   │   ├── dlf_20151119_1635_2489df84.mp3
│   │   │   ├── dlf_20151120_1635_cdbe1677.mp3
│   │   │   ├── dlf_20151123_1635_4f30199a.mp3
│   │   │   ├── dlf_20151124_1635_c8484c71.mp3
│   │   │   ├── dlf_20151125_1635_f675fca3.mp3
│   │   │   ├── dlf_20151126_1635_ceb427e4.mp3
│   │   │   ├── dlf_20151127_1635_d2bb7b35.mp3
│   │   │   ├── dlf_20151130_1635_543b425a.mp3
│   │   │   ├── dlf_20151201_1635_a268bdf5.mp3
│   │   │   ├── dlf_20151202_1635_3885c0ce.mp3
│   │   │   ├── dlf_20151203_1635_15a8b554.mp3
│   │   │   ├── dlf_20151204_1635_77c9f8e6.mp3
│   │   │   ├── dlf_20151207_1635_6e470b70.mp3
│   │   │   ├── dlf_20151208_1636_506950af.mp3
│   │   │   ├── dlf_20151209_1635_e88f882a.mp3
│   │   │   ├── dlf_20151210_1635_adc18482.mp3
│   │   │   ├── dlf_20151211_1635_21e3967a.mp3
│   │   │   └── dlf_20151214_1635_aa4f6dd2.mp3
│   │   ├── Minkorrekt
│   │   │   ├── methodisch_inkorrekt_Folge_62.mp3
│   │   │   ├── methodisch_inkorrekt_Folge_63.mp3
│   │   │   └── methodisch_inkorrekt_Folge_64.mp3
│   │   ├── Raumzeit
│   │   │   └── rz059-kleinsatelliten.mp3
│   │   ├── Resonator
│   │   │   ├── RES059_Das_JuLab_am_FZ_Juelich.mp3
│   │   │   ├── RES060_Supercomputer_am_FZ_Juelich.mp3
│   │   │   ├── RES061_High_Performance_Computing.mp3
│   │   │   ├── RES062_20_Jahre_Helmholtz-Gemeinschaft.mp3
│   │   │   ├── RES063_Raumfahrer_Jan_Woerner.mp3
│   │   │   ├── RES064_Kurz_zur_Wissenschaftshistorik.mp3
│   │   │   ├── RES065_Die_Helmholtz-Gremien.mp3
│   │   │   ├── RES066_Mojib_Latif_und_der_Papst.mp3
│   │   │   ├── RES067_Mojib_Latif_und_das_Klima.mp3
│   │   │   ├── RES068_Helmholtz-Praesident_Otmar_Wiestler.mp3
│   │   │   ├── RES069_Krebsmythen.mp3
│   │   │   ├── RES070_Der_Krebsinformationsdienst.mp3
│   │   │   ├── RES071_Auftrieb.mp3
│   │   │   ├── RES072_Fliegender_Hubschraubersimulator.mp3
│   │   │   ├── RES073_Tierversuche.mp3
│   │   │   └── RES074_Eine_Million_Downloads.mp3
│   │   ├── Sternengeschichten
│   │   │   ├── 153-SternengeschichtenFolge153.mp3
│   │   │   ├── 154-SternengeschichtenFolge154.mp3
│   │   │   ├── 155-SternengeschichtenFolge155.mp3
│   │   │   ├── 156-SternengeschichtenFolge156.mp3
│   │   │   ├── 157-SternengeschichtenFolge157.mp3
│   │   │   ├── 158-SternengeschichtenFolge158.mp3
│   │   │   └── 159-SternengeschichtenFolge159.mp3
│   │   ├── Wissenschaft_im_Brennpunkt
│   │   │   ├── dlf_20151129_1645_174b2b07.mp3
│   │   │   ├── dlf_20151206_1630_8929df96.mp3
│   │   │   ├── dlf_20151206_1632_bf36aa03.mp3
│   │   │   ├── dlf_20151206_1639_2c383811.mp3
│   │   │   ├── dlf_20151206_1645_8d39f12a.mp3
│   │   │   ├── dlf_20151206_1655_693d0c58.mp3
│   │   │   ├── dlf_20151206_1656_ed402a76.mp3
│   │   │   ├── dlf_20151213_1630_6243aca9.mp3
│   │   │   ├── dlf_20151213_1630_77355fac.mp3
│   │   │   ├── dlf_20151213_1634_9f45aac9.mp3
│   │   │   ├── dlf_20151213_1638_ff4774ef.mp3
│   │   │   ├── dlf_20151213_1643_54497f3c.mp3
│   │   │   ├── dlf_20151213_1649_394ae75b.mp3
│   │   │   ├── dlf_20151213_1655_004ca792.mp3
│   │   │   └── dlf_20151213_1655_8ea50dce.mp3
│   │   └── WRINT_Wissenschaft
│   │       └── WR494_Pickelgewimmerl.mp3
│   └── WRINT
│       └── WRINT_Alle
│           ├── WR481_Heul_doch_Gnotschi.mp3
│           ├── WR482_Glioblastom.mp3
│           ├── WR483_Das_19_Jahrhundert.mp3
│           ├── WR484_Cartmanwall.mp3
│           ├── WR485_Frau_Diener_verreist_mit_der_Transsib.mp3
│           ├── WR486_Sebastian_Schneider.mp3
│           ├── WR487_ALLERHEILIGEN.mp3
│           ├── WR488_Zunft_im_Zwist.mp3
│           ├── WR489_Nachgefragt_zum_Thema_Segeln_auf_der_Tres_Hombres.mp3
│           ├── WR490_Sueppchen_kochen.mp3
│           ├── WR491_Horst-Kevin.mp3
│           ├── WR492_Die_Petri-Ueberraschung.mp3
│           ├── WR493_Zum_Thema_Linguistik.mp3
│           ├── WR494_Pickelgewimmerl.mp3
│           └── WR495_Masturbationsputten.mp3
├── Podcasts.dat -> /root/.podget/serverlist
├── sansync.sh
├── sync2player.sh
├── TreeAktuell
└── TreeOld

36 directories, 176 files

(Christian Müller) #5

Das Script, welches mir die Mailübersicht (ein diff vorher nachher) mailt, wird per cronjob aufgerufen:

cronjob:

22 */8 * * * cm /bin/bash /data/MCP/SanSync/DiffSync.sh

Das Script selbst sieht so aus:

cat /data/MCP/SanSync/DiffSync.sh

#!/bin/bash

PODCASTDIR="/data/MCP/SanSync/Podcast"
BINDIR="/data/MCP/SanSync"
cd $PODCASTDIR

mv $BINDIR/TreeAktuell $BINDIR/TreeOld

tree Alle/Chaosradio Alle/Der-Lautsprecher/ Alle/Fokus_Europa/ Alle/Metaebene-meta Favoriten/Alternativlos/ Favoriten/CRE/ Favoriten/FreakShow/ Favoriten/NSFW/ Favoriten/Logbuch_Netzpolitik/ Radio/Feature-Deutschlandfunk/ Radio/DieSondersendung/ Wissenschaft/Minkorrekt Wissenschaft/Resonator/ Wissenschaft/Forschergeist/ Wissenschaft/Raumzeit/ Wissenschaft/WRINT_Wissenschaft/ Wissenschaft/Wissenschaft_im_Brennpunkt/ > $BINDIR/TreeAktuell

function pushAktuell() {
    echo
    echo "-------------------------------"
    echo "N E U E   P O D C A S T S ! ! !"
    echo "-------------------------------"
    echo
    cat $BINDIR/TreeAktuell | nl
}

diff $BINDIR/TreeOld $BINDIR/TreeAktuell || pushAktuell

cp $BINDIR/TreeAktuell $PODCASTDIR/

Die “schöne” Baumansicht erstellt tree, welches als Paket vorliegt:

tree/stable,now 1.7.0-3 amd64  [installiert]
  Farbige Anzeige eines Verzeichnisbaums mit Einrückungen