Suche Ergänzung bzw. Änderung an Script

SkyMaster

schläft auf dem Boardsofa
Suche ergänzung bezw. änderung am Scribt

hallo,

Ich habe mir mal für mein Server (Suse9) ein Scribt für ein Backup gebastelt.

Das funzt auch 100% bis auf eines.......

Es sollten eigenlich nur immer verzeichnisse von 5 Tagen auf den Server und auf den Backupserver liegen.
Leider macht er imer noch JEDEN Tag ein Backup (was er ja auch soll) aber nach 10 Tagen hat er auch noch 10 Backups auf beiden Servern liegen.

Wie kann ich es machen (bezw. ändern) damit er die VERZEICHNISSE (nicht NUR einzelne Datein) löscht, die älter wie 5 Tage sind? (am besten auf beide Server)

Ich danke schon mal für eure Hilfe

Hier das Scribt (persöhnliche Daten sind durch XXXXX ersetzt)

Code:
#! /bin/sh 

#-----------------------------------Benötigte Variablen für das Scribt------------------------------------
TAG=`date +%d-%m-%Y`
FTPHOST="backup.serverkompetenz.de"
USER="bxxxxxx"
PASS="xxxxxxxx"
#---------------------------------------------------------------------------------------------------------

#-----------------------------------Verzeichnisse auf root-Server anlegen--------------------------------------
mkdir /Backup/user/${TAG}
cd /Backup/user/${TAG}
mkdir /Backup/user/${TAG}/html
mkdir /Backup/user/${TAG}/mysql
mkdir /Backup/user/${TAG}/files
mkdir /Backup/user/${TAG}/mails
#---------------------------------------------------------------------------------------------------------

#------------------------------------Daten von Kunden Sichern (Mit schleife)------------------------------ 
i=2;
while [ $i -le 30 ]
do 
find /Backup/user/ -mtime +4 | xargs rm -f;   
tar zcvf /Backup/user/${TAG}/html/web${i}-HTML-BACKUP_${TAG}.tar.gz /srv/www/htdocs/web${i}/html/ ;  
tar zcvf /Backup/user/${TAG}/mysql/web${i}-MYSQL-BACKUP-${TAG}.tar.gz /var/lib/mysql/usr_web${i}_*/; 
tar zcvf /Backup/user/${TAG}/files/web${i}-FILES-BACKUP-${TAG}.tar.gz /srv/www/htdocs/web${i}/files/;
tar zcvf /Backup/user/${TAG}/mails/web${i}-MAILS-BACKUP-${TAG}.tar.gz /var/mail/web${i}p*; 
i=$[$i+1];
done
#---------------------------------------------------------------------------------------------------------

#-------------------------------------Auf dem Backup-Server einloggen----------------------------------------
(
ftp -i -n -d $FTPHOST<<EOF
user $USER $PASS
#---------------------------------------------------------------------------------------------------------

#----------------------------------Alte Daten auf dem Backupserver löschen--------------------------------
del /Backup/user/*
#---------------------------------------------------------------------------------------------------------

#----------------------------------Verzeichnisse auf dem FTP-Server anlegen-------------------------------
cd Backup
cd user
mkdir ${TAG}
cd ${TAG}
mkdir html
mkdir mysql
mkdir files
mkdir mails
cd ..
#---------------------------------------------------------------------------------------------------------

#----------------------------Gesicherte Daten vom root-Server auf dem Backup-Server hochladen---------------------
mput /Backup/user/${TAG}/html/*
mput /Backup/user/${TAG}/mysql/*
mput /Backup/user/${TAG}/files/*
mput /Backup/user/${TAG}/mails/*
#---------------------------------------------------------------------------------------------------------

#---------------------------------------Vom FTP-Server abmelden-------------------------------------------
quit
#---------------------------------------------------------------------------------------------------------

#------------------------------------Logfiles auf dem Server anlegen--------------------------------------
EOF
) >>/Backup/logfiles/User-ftptransfer-${TAG}.log 2>&1 &
#---------------------------------------------------------------------------------------------------------
 
Warum nimmst Du ftp zum kopieren, ssh ist viel einfacher zu benutzen und dazu auch noch sicher!
 
Hallo Fork,

das ist einfach zu erklären,

Ich hab den Backup-Server kostenlos bei mein Root-server dabei!
Allerdings ist dort nur ein Zugriff (angeblich) ber FTP möglich)

Gruß
Sky
 
Hab's mal etwas abgeaendert. Die Codefunktion ist echt mies, in dieser Version vom vbb. Hier liegts auch noch mal:
http://dynamicsms.no-ip.com/tmp/backup.sh.html

Das Script ist nicht getestet!!!

Code:
#! /bin/sh 

# ========== Benötigte Variablen für das Script ==========

       TAG="date -I"
BACKUPHOST="backup.serverkompetenz.de"
      USER="bxxxxxx"
      PASS="xxxxxxxx"
 BACKUPDIR="/Backup/user/${TAG}"

# ========== Verzeichnisse auf root-Server anlegen ==========

mkdir $BACKUPDIR
cd    $BACKUPDIR

# ========== Daten von Kunden Sichern (Mit schleife) ==========

# Wir befinden uns in $BACKUPDIR, ls nach Aenderungsdatumsortieren, alle Zeilen
# ab der 6 weitergeben und loeschen 

ls -1At .. | tail +6 | xargs rm -fr


i=2
while [ $i -le 30 ]
do 

	# Alle Daten eines Kunden in eine Datei sichern 

	tar -cvzf $BACKUPDIR/web${i}-BACKUP_${TAG}.tar.gz 	\
		/srv/www/htdocs/web${i}/html/			\
		/srv/www/htdocs/web${i}/files/			\
		/var/lib/mysql/usr_web${i}_*/			\
		/var/mail/web${i}p*

	i=$[$i+1];
done

# ========== Daten auf den Backupserver kopieren ==========

(
	ftp -i -n -d $BACKUPHOST<<EOF
		
		# Einloggen
		user $USER $PASS

		# Alten Daten loeschen
		mdel /Backup/user/\*
	
		# Verzeichnis erstellen+wechseln
		mkdir $BACKUPDIR
		cd    $BACKUPDIR

		# Daten kopieren
		mput $BACKUPDIR/*

		# Abmelden
		quit

EOF

# Logfile anlegen
) >>/Backup/logfiles/User-ftptransfer-${TAG}.log 2>&1 &
 
Hallo fork

Danke für deine unterstützung.
Du hast dir so viel mühe gegeben das Script komplett umzuschreiben, dabei währe das gar nicht nötig gewesen ...
Leider geht das Scribt so auch nicht auf mein Server,
er versteht schon die Behehle zu löschen und der teit nicht.
....
Aber geholfen hat es mir trozdem...den ich hommte anhand deines Scripts erkennen was ich falsch hatte ;)

So hatte ich zu löschen der alten files (mit zeitangabe) einfar nur das "r" vergessen
Ich hatte -f richtig ist -fr

Bei dem Backupserver hatte ich nur "del" anstelle von mdel angegeben :)

Ich danke dir auf jeden fall für deine unterstützung ...

gruß
Sky
 
....Noch eine ergänzung......

Das Löschen auf dem Backup-Server mittels "mdel" funzt leider auch nicht :(

Es kommt die Meldung das er es nicht löschen kann, da es ein VERZEICHNISS ist :(
Schade eigenlich.
 
a) Dann installier' Dir mal lftp(http://lftp.yar.ru/). Ein anderer Kommandozeilen-FTP-Client der das rekursive löschen beherrscht(Kommando glob -a rm -rf *).

b) Sichere die Dateien so das keine Verzeichnisse, sondern nur Dateien entstehen. Z. B. in dem Du alle Dateien der täglichen Sicherung noch mal mit tar in ein Archiv packst, natürlich ohne Kompression. Dann gibt's auch nichts das rekursiv gelöscht werden muss, sondern nur Dateien.

c) Eine ganz andere Methode wäre FTPFS(lufs) (http://lufs.sourceforge.net/lufs/intro.html) Dann hast Du keine Probleme mit irgendwelchen FTP-Clients. Allerdings erfordert das eine Kernelkompilation.

fork();
 
Zuletzt bearbeitet:
Oben