public-scripts/friendica-remove-old-photos-parallel.sh

58 lines
1.6 KiB
Bash
Raw Normal View History

2025-01-24 19:16:21 +00:00
#!/bin/bash
IFS="
"
#Set your parameters here
2025-02-03 03:47:09 +00:00
url=friendica.example.net
2025-01-24 19:16:21 +00:00
db=friendica
folder=/var/www/friendica
folderavatar=/var/www/friendica/avatar
loop() {
#Parse each file in folder
ky=$(echo "${y}" | sed -e "s/${folderescaped}/https:\/\/${url}/g" -e "s/-[0-9]*\..*\$//g")
f=$(sudo mariadb "${db}" -N -B -q -e "select photo from contact where photo like '${ky}%' limit 1")
if [[ $? -eq 0 && -z ${f} && -f ${y} ]]
2025-01-24 19:16:21 +00:00
then
ls -lh "${y}"
sudo rm -rf "${y}"
2025-01-24 19:16:21 +00:00
d=$(( d + 1 ))
fi
#printf "\rPhotos: %s\tFolder %s\tEntry %s " "$d" "$n" "$m"
printf "\rFolder %s\tEntry %s " "${n}" "${m}"
return "${d}"
2025-01-24 19:16:21 +00:00
}
date
#Go to the Friendica installation
cd "${folderavatar}" || exit
2025-01-24 19:16:21 +00:00
let "indexlength=37+${#url}"
(( indexlength=49+${#url} ))
sudo mariadb "${db}" -e "alter table contact add index if not exists photo_index (photo(${indexlength}))"
2025-01-24 19:16:21 +00:00
n=0
d=0
sudo find "${folderavatar}" -depth -mindepth 1 -maxdepth 1 -type d | while read -r x
2025-01-24 19:16:21 +00:00
do
n=$(( n + 1 ))
#If the directory still exists
if [[ -d "${x}" ]]
2025-01-24 19:16:21 +00:00
then
folderescaped=${folder////\\/}
kx=$(echo "${x}" | sed -e "s/${folderescaped}/https:\/\/${url}/g" -e "s/-[0-9]*\..*\$//g")
if [[ -d ${x} ]]
2025-01-24 19:16:21 +00:00
then
m=0
while read -r y
do
m=$(( m + 1 ))
loop "${x}" "${m}" "${n}" "${d}" &
2025-02-03 03:47:09 +00:00
if [[ $(jobs -r -p | wc -l) -ge $(( $(getconf _NPROCESSORS_ONLN) * 2 )) ]]
2025-01-24 19:16:21 +00:00
then
wait -n
fi
2025-02-03 03:47:09 +00:00
#done < <(sudo find "${x}" -type f -mtime -8)
done < <(sudo find "${x}" -type f)
2025-01-24 19:16:21 +00:00
fi
fi
done
sudo mariadb "${db}" -e "alter table contact drop index photo_index"
2025-01-24 19:16:21 +00:00
date