Soms heb je wel eens de wens dat je maar 1 share hoeft aan te klikken en dan je vanuit die share andere shares kunt zien.
Zo heb ik bijvoorbeeld een map waar in al mn downloads binnen komen en uitgepakt worden.
Al deze tijdelijke mappen/bestanden hoef ik niet te zien als ik een film of serie wil kijken op mn media speler.
Om die reden heb ik een script die symlinks (snelkoppelingen) maakt naar de door mij opgegeven folders.
Ik heb een share genaamd Video en daar in staan twee folders.
Movies en Series.
Hier in staan symlinks naar de series en films die in een andere folder staan.
op die manier krijg ik alleen te zien wat ik wil zien.
hiervoor hoef je alleen de volgende waarden op te geven in onderstaand script (deze is alleen voor mn Series):
# de source directories even defineren. (Je kunt hier 1 dir opgeven maar ook meerdere indien gewenst. Dit doe je door een spatie achter elk pad te plaatsen.
DIRTOSCAN="/volume1/Downloads/series /volume1/uploads/jan/Series /volume1/uploads/karel/Series"
# Aangeven waar de Symlinks moeten komen.
DESTDIR="/volume1/video/Series"
Script (voor series):
#!/opt/bin/bash
# Zorg dat de datum en tijd goed leesbaar zijn
DATE=`date +"%b %e %T "`
# print een melding naar het /var/log/symlinklog logbestand en toon de melding op het scherm dat het script is gestart
printf "e[37m${DATE}e[34m#------------------------- RUNNING /opt/home/series-symlink-script.sh -------------------------#ne[37m" >> /var/log/symlinklog
printf "e[37m${DATE}e[34m#------------------------- RUNNING /opt/home/series-symlink-script.sh -------------------------#ne[37m"
# Indien je de symlinks wilt verwijderen: find /volume1/video/Series/ -maxdepth 1 -type l -exec rm {} ;
# Verander de field seperator voor de for loop anders zal hij mappen met spaties in de naam per wordt afhandelen in plaats van de map in zijn geheel
IFS="
"
# de source directories even defineren.
DIRTOSCAN="/volume1/Downloads/series /volume1/uploads/jan/Series /volume1/uploads/karel/Series"
# Aangeven waar de Symlinks moeten komen.
DESTDIR="/volume1/video/Series"
# Controleer of alle symlinks nog valide zijn
find ${DESTDIR} | while read -r LINK; do
# Indien de symlink verwijst naar een folder die niet bestaat
if ! test -e "$LINK"; then
# verwijder deze dan
rm "$LINK"
# En toon dit in /var/log/symlinklog en op het scherm
filedirectory=$(dirname $LINK)
filename=`echo $LINK | sed 's!.*/!!'`
printf "e[37m${DATE} --- e[36mSYMLINK e[31mREMOVED e[37m--- ${filedirectory}/e[31m${filename}e[31mn" >> /var/log/symlinklog
printf "e[37m${DATE} --- e[36mSYMLINK e[31mREMOVED e[37m--- ${filedirectory}/e[31m${filename}e[31mn"
fi
done
# Loop door de sources directories.
for i in $DIRTOSCAN ; do
# Loop door de gevonden files in 1 van de source directories en delete regel 1 van de output
for file in `find $i -maxdepth 1 | sed '1d' ` ; do
# strip het pad zodat er alleen een bestandsnaam overblijft
file1=`echo $file | sed 's!.*/!!'`
# als een symlink van het bestand nog NIET bestaat (-h = symlink)
if [ ! -h `echo ${DESTDIR}/${file1}` ] ; then
# Maak de symlink
ln -s ${file} ${DESTDIR}
printf "e[37m${DATE}e[37m --- e[36mSYMLINK e[32mCREATED e[37m--- ${DESTDIR}/e[32m${file1}ne[37m" >> /var/log/symlinklog
printf "e[37m${DATE}e[37m --- e[36mSYMLINK e[32mCREATED e[37m--- ${DESTDIR}/e[32m${file1}n"
fi
# Sluit beide loops.
done
done
# Print een melding naar /var/log/symlinklog en naar het scherm dat script klaar is
printf "e[37m${DATE}e[34m#------------------------- END OF SCRIPT -------------------------#n" >> /var/log/symlinklog
printf "e[37m${DATE}e[34m#------------------------- END OF SCRIPT -------------------------#n"
Samba staat het standaard niet toe om symlinks te volgen.
Pas de samba config aan om dit te laten werken:
vi /usr/syno/etc/smb.conf
Voeg de volgende waarden toe aan [Global]
follow symlinks = yes
wide symlinks = yes
unix extensions = no
Samba herstarten en de Symlinks worden gevolgd:
/usr/syno/etc/rc.d/S80samba.sh restart
Dit script staat bij mij in:
/opt/home/series-symlink-script.sh
Ik heb het script opgenomen in mn crontab zodat deze elke dag om 12 uur draait:
vi /etc/crontab
Voeg toe aan crontab:
0 * * * * root /opt/home/series-symlink-script.sh
Restart Cron:
/usr/syno/etc/rc.d/S04crond.sh stop
/usr/syno/etc/rc.d/S04crond.sh start
Meer info over hoe cron werkt kun je terug lezen op de site van
Wizjos!Thats it!
elke avond om 00:00 worden er Symlinks gemaakt van al mijn folders waar series in staan.
Ditzelfde script draait ook voor mn films.