tar network backup problem

karloff

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.

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?
 
Ich würde auf tar verzichten und ein inkrementelles rsync nutzen. Sämtliche Packprogramme sind ab einer bestimmten Grösse des Archivs oder einer bestimmten Anzahl an Dateien in einem Archiv sehr ressourcenfressend. tar selbst spart ja eh nicht wirklich Speicherplatz im Gegensatz zu den reinen Dateien.

Alternativ klare Richtlinien zum Umgang mit dem FTP-Server in der Firma etablieren. D.h. eine Ansage machen: Dateien, die mehr als XX Tage nicht angefasst wurden, werden entfernt. Ich weiss ja nicht inwiefern du Einfluss auf solche Vorgänge du in deiner Firma hast und wieviel du dort zu melden hast.
 
Ich würde auf tar verzichten und ein inkrementelles rsync nutzen. Sämtliche Packprogramme sind ab einer bestimmten Grösse des Archivs oder einer bestimmten Anzahl an Dateien in einem Archiv sehr ressourcenfressend. tar selbst spart ja eh nicht wirklich Speicherplatz im Gegensatz zu den reinen Dateien.

Alternativ klare Richtlinien zum Umgang mit dem FTP-Server in der Firma etablieren. D.h. eine Ansage machen: Dateien, die mehr als XX Tage nicht angefasst wurden, werden entfernt. Ich weiss ja nicht inwiefern du Einfluss auf solche Vorgänge du in deiner Firma hast und wieviel du dort zu melden hast.

Danke für den Tipp bin jetzt auf rsync umgestiegen, eigentlich ist die Regel klar nach 90 Tagen ohne access sind die Daten weg.
Die 35 Tagen sind sozusagen nur kullanz von uns falls es dann doch mal ein wichtiges file treffen sollte.

Einiger negativer Punkt das die Dateistruktur nicht erhalten bleibt.

Aber gut gibt schlimmeres.

Danke !
 
Du kannst ja durch das Skript die Verzeichnisstruktur entsprechend anlegen lassen, bevor du das rsync ausführst.
 

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

CentOS 5.8 –SQL Abfrage– HTML wird generiert und daraus müssen mehrere Mails versendet werden

Shell Skript beschleunigen

HandbrakeCLI Shell Skript

Shellscript unerwartetes Dateiende

Zurück
Oben