Hi!!
Ich hab ein paar hltv server laufen und die nehmen durchweg demos auf. Die demos werden in ein und dem selben ordner gespeichert. Nun will ich per cronjop diese dateien einmal am tag in einen ordner kopieren wo man sie per http downloaden kann. Mein problem ist das ich nur alle koppieren kann ( copy demo* /var/www/...../demos ) . In dem ordner Sind sagen wir mal 15 dateien ( variable größe ) alle beginnen mit demo,. Nun will ich alle dateien außer die letzten 2 ( variable größe ) in einen neuen ordner verschieben / kopieren. Wie kann ich das bewerkstelligen das das scipt was von cron einmal am tag gestartet wird alle dateien bis auf die letzten 2 (variable größe ) in einen extra ordner kopiert / verschiebt?
Die letzten 2 ( variabke größe ) weil diese dateien von dem hltv noch in neutzung sind aber trotzdem kopiert werden können was aber im nachhinein die demos unanschaubar macht.
Ich würde mich freuen wenn mir einer helfen kann bzw mir einen ansatz zeigt wie ich dies bewerkstelligen kann
mfg blotter
Kopieren von dateien
- killerhippy
- Posts: 529
- Joined: 19. May 2000 19:36
- Contact:
Hi,
das Verschieben von Dateien innerhalb gleicher Partiitionen, solange sie offen sind, funktioniert deshalb, weil sie ihre inode Nummer behalten und deshalb wird weiterhin darin geschrieben. Ueber Partitionsgrenzen hinweg funktioniert das nicht.
Dein Problem laesst sich mit ein bisschen scripten mit etwas sed, cut und grep bewerkstelligen.
das Verschieben von Dateien innerhalb gleicher Partiitionen, solange sie offen sind, funktioniert deshalb, weil sie ihre inode Nummer behalten und deshalb wird weiterhin darin geschrieben. Ueber Partitionsgrenzen hinweg funktioniert das nicht.
Dein Problem laesst sich mit ein bisschen scripten mit
Code: Select all
ls -lrt | head -n 14
Last edited by killerhippy on 06. Oct 2004 21:19, edited 1 time in total.
Es gibt keine dumme Fragen!
Killerhippy
Killerhippy
Ganz unsauber so:
Code: Select all
#!/bin/sh
anzahl=0
for file in $(ls [Quellverzeichnis]/demo*); do
anzahl=$[$count+1]
done
count=0
for file in $(ls [Quellverzeichnis]/demo*); do
if [ "$count" -le "$[$anzahl-2]" ]; then
cp file [Zielverzeichnis]
fi
count=$[$count+1]
done
Hi!
Ich danke euch für eure schnell hilfe.
Iich werd das kleine script mal ausprobieren.
....
Ich hab das scipt mal ausprobiert und bissel was gändert
mfg blotter
Ich danke euch für eure schnell hilfe.
Iich werd das kleine script mal ausprobieren.
....
Ich hab das scipt mal ausprobiert und bissel was gändert
Code: Select all
#!/bin/bash
# 06.10.04 first add by Lateralus
# 07.10.04 modify by blotter
# set vars
anzahl=0
count=0
subtr=2
sdir="QUELLVERZEICHNIS + datei*"
cdir="ZIElVERZEICHNIS"
# lets work start now
#
# get number of the files contained in the directory
for file in $(ls $sdir); do
anzahl=$[$anzahl+1]
#echo $anzahl $file
done
# move the files from the directory in a new directory out of the last $subtr
for file in $(ls $sdir); do
count=$[$count+1]
if [ "$count" -le "$[$anzahl-$subtr]" ]; then
cp $file $cdir
rm $file
#echo $count $file
fi
# echo $count $file
done