karloff
Routinier
Hey ich hab da mal ne Frage und zwar wie ich folgendes effizienter lösen kann.
Die Aufgabenstellung sieht folgend aus:
Wir haben einen FTP Server und dort sehen die Leute nicht ein ihre Daten wieder zu entfernen und so müllte das Ding in der Vergangenheit des öfteren zu.
Darauf hin habe ich ein script gebastelt das sich den atime stempel ansieht und Daten die längere Zeit nicht benötigt wurden in ein tar archiv packt, allerdings aus Platzgründen auf dem FTP, auf einer über SMB gemouteten Platte.
Wie es alles klappt auch bis ca. 1,5 GB files ganz gut, danach wird das ganze aber grütze langsam.
Anbei mal das script.
Hat irgendwer nen Tipp wie man das effizienter lösen kann?
Die Aufgabenstellung sieht folgend aus:
Wir haben einen FTP Server und dort sehen die Leute nicht ein ihre Daten wieder zu entfernen und so müllte das Ding in der Vergangenheit des öfteren zu.
Darauf hin habe ich ein script gebastelt das sich den atime stempel ansieht und Daten die längere Zeit nicht benötigt wurden in ein tar archiv packt, allerdings aus Platzgründen auf dem FTP, auf einer über SMB gemouteten Platte.
Wie es alles klappt auch bis ca. 1,5 GB files ganz gut, danach wird das ganze aber grütze langsam.
Anbei mal das script.
Code:
#!/bin/bash
IFS=$"\n"
gettime () {
sudo ntpdate de.pool.ntp.org
}
datum=`date +%d%m%y`
# Crappy SMB nur ueber root mountbar via fstab
mountshare () {
sudo mount /media/netdisk/
}
umountshare () {
sudo mount /media/netdisk/
}
del_old_archives() {
find /media/netdisk/ -mtime +35 -type f -exec rm -f {} \;
}
gast_acc() {
find /home/gast -atime +90 -type f -exec echo {} \; >> /tmp/old_gast.txt
#find /home/gast -type f -exec echo {} \; >> /tmp/old_gast.txt # Test Variable ohne Einschraenkung
FILE_SIZE=(`stat -c %s /tmp/old_gast.txt`)
if [ ${FILE_SIZE} -gt 0 ]; then
echo "Liste enthaelt Daten - starte Verarbeitung"
#while read daten; do echo "'${daten}'" >> /tmp/old_gast_tmp.txt ;done < /tmp/old_gast.txt
#cat /tmp/old_gast_tmp.txt
#mkdir /home/tmp/gast 2&>/dev/null
echo "Folgende Dateien haben seit 365 Tagen kein Zugriff verzeichnet:"
while read inhalt; do echo ${inhalt} ; done < /tmp/old_gast.txt
cp /tmp/old_gast.txt /tmp/old_gast.rtf
sendEmail [...]
sleep 2
echo "Starte Datenarichiverung"
tar -cvf /media/netdisk/backup_gast_${datum}.tar /tmp/old_gast.rft
while read content; do tar frvv /media/netdisk/backup_gast_${datum}.tar "${content}" ; done < /tmp/old_gast.txt && while read content; do rm -f "${content}" ; done < /tmp/old_gast.txt
tar jcvf /media/netdisk/backup_gast_${datum}.tar.bz2 /media/netdisk/backup/backup_gast_${datum}.tar
#####info#####
#tar muss append sonst macht er jedes file neu
#############
#while read inhalt; do rm -f ${inhalt} ; done < /tmp/old_gast.txt
rm /tmp/old_gast.txt
rm /tmp/old_gast.rtf
else
echo "Liste enthaelt keine Daten - nothing to do"
fi
}
find /home/gast/ -type d -empty -exec rmdir {} \; 2&>/dev/null
find /home/gast/ -type d -empty -exec rmdir {} \; 2&>/dev/null
find /home/gast/ -type d -empty -exec rmdir {} \; 2&>/dev/null
find /home/gast/ -type d -empty -exec rmdir {} \; 2&>/dev/null
find /home/gast/ -type d -empty -exec rmdir {} \; 2&>/dev/null
find /home/gast/ -type d -empty -exec rmdir {} \; 2&>/dev/null
mountshare
gettime
del_old_archives
gast_acc
umountshare
Hat irgendwer nen Tipp wie man das effizienter lösen kann?