mirror of
https://github.com/kneutron/ansitest.git
synced 2025-01-16 04:42:55 +08:00
90 lines
3.0 KiB
Bash
90 lines
3.0 KiB
Bash
#!/bin/bash
|
|
|
|
# Traverses subdirs on SMB net share and symlinks everything into 1 flat dir on proxmox
|
|
# Saves on ISO storage space across PVE nodes
|
|
# 2024.Feb kneutron / edits 2024.Nov
|
|
|
|
# shared ISOs are mounted via samba from macpro on 2.5gbit network, R/O
|
|
# fstab:
|
|
# //macpro-25g/shrcompr-ztoshtera6 /mnt/imac5 cifs noauto,noexec,credentials=/root/.smb-macpro,uid=root,ro 0 0
|
|
|
|
# NOTE Pass "1" as arg to auto-delete broken symlinks
|
|
|
|
# Rerun the script on each PVE node if you update / delete ISOs on the share / run nightly in cron
|
|
|
|
# for cron
|
|
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/games:/usr/games:/root/bin:/root/bin/boojum:/usr/X11R6/bin:/usr/NX/bin:
|
|
|
|
# Example root crontab entry:
|
|
# every day @ 11:01pm, refresh ISO symlinks and autodelete stale ones
|
|
#1 23 * * * /root/bin/boojum/symlink-samba-isos.sh 1 2>&1 >/root/symlink-samba-isos.log
|
|
|
|
# TODO set to 0 if you only have 1 shared ISO dir
|
|
enable2nddir=0
|
|
|
|
# Destination dir for iso symlinks
|
|
# NOTE - default proxmox iso storage is /var/lib/vz
|
|
# faster ones here
|
|
cd /var/lib/vz/template/iso || exit 44;
|
|
|
|
# grep iso at the end skips any misc non-iso files that were part of a torrent
|
|
# NOTE this is 2.5Gbit samba mount to zint1000pro - faster
|
|
# only if mounted, otherwise skip
|
|
# xxx TODO EDITME
|
|
mnt=macpro-zint1000
|
|
if [ $(df |grep -c $mnt) -gt 0 ]; then
|
|
ln -sfn $(find /mnt/$mnt/ISO/ |grep iso$) .
|
|
#ls -l
|
|
echo "o Checking for broken symlinks:"
|
|
pwd
|
|
if [ "$1" = "1" ]; then
|
|
echo "o Auto-deleting broken symlinks per arg passed"
|
|
find . -xtype l -print -delete # autofix broken sym
|
|
else
|
|
# display only, admin needs to fix
|
|
find . -xtype l
|
|
fi # if autofix broken symlinks
|
|
# find . -xtype l -exec rm -v {} \; # fix broken sym
|
|
fi # if df
|
|
|
|
if [ $enable2nddir -gt 0 ]; then
|
|
# secondary ISO dir [optional]
|
|
# This is the destination dir on pve - xxx TODO EDITME
|
|
cd /mnt/seatera4-xfs/template/iso || exit 44;
|
|
# this is the samba mount - xxx TODO EDITME
|
|
mnt=imac5
|
|
if [ $(df |grep -c $mnt) -gt 0 ]; then
|
|
echo '====='
|
|
echo "o Symlinking 2nd dir $mnt to $PWD"
|
|
ln -sfn $(find /mnt/$mnt/ISO/ |grep iso$) .
|
|
# show broken/stale symlinks
|
|
pwd
|
|
echo "o Checking for broken symlinks from $mnt:"
|
|
if [ "$1" = "1" ]; then
|
|
echo "o Auto-deleting broken symlinks per arg passed"
|
|
find . -xtype l -print -delete # fix broken sym
|
|
else
|
|
# display only, admin needs to fix
|
|
find . -xtype l
|
|
fi # if autofix broken symlinks
|
|
fi # if df
|
|
fi # if 2nd dir
|
|
|
|
exit;
|
|
|
|
# alternative:
|
|
#[ $(which symlinks |wc -l) -eq 0 ] && apt install -y symlinks
|
|
#symlinks -r .
|
|
|
|
#REF: https://www.reddit.com/r/Proxmox/comments/1aqn2sc/connecting_to_read_only_nfs_for_iso/
|
|
|
|
#2024.0520 FIXED did not remove stale/broken symlinks - use midnight commander to detect them
|
|
#REF: https://linuxhandbook.com/find-broken-symlinks/
|
|
|
|
#ln -sfn $(find /zseatera4mir/from-macpro-ztoshtera6/shrcompr-ztoshtera6/ISO/ |grep iso$) .
|
|
# xxx 2024.0324, macpro was off most of the weekend
|
|
|
|
# NOTWORK
|
|
#argdel=""
|
|
#[ "$1" = "1" ] && argdel="-exec rm -v {} \;" # fix broken sym
|