starbuxx
Aktives Mitglied
Thread Starter
- Dabei seit
- 13.04.2003
- Beiträge
- 1.454
- Reaktionspunkte
- 8
#!/bin/bash: wie festellen, auf welchem fs datei liegt?
gruess euch,
hintergrund:
ein skript läuft stündlich (liegt in /etc/rc.d/cron.hourly) und kuckt, ob in einem verzeichniss neue dateien liegen. wenn ja, verschiebt es sie an einen anderen ort.
problem:
man weiss nicht, ob auf dem ziel-filesystem genug platz ist. muss man auch nicht, wenn das quell- und ziel-filesystem das gleiche sind (man brauch praktisch keinen platz für die aktion).
ist das ziel-filesystem ein anderes, ist es wichtig, zu prüfen, ob genug speicherplatz auf dem zieldateisystem zur verfügung steht, um die dateien dorthin zu verschieben.
bis jetzt mach ich das so
meine frage:
geht das nicht einfacher? ich mein' damit jetzt nicht, den conditional soweit aufzublasen, bis er in eine zeile passt
mit dem statement '-ef' kann man in einem if-test ja feststellen, ob zwei dateien den gleichen iNode _und_ das gleiche filesystem haben. in meinem fall wird das mit dem gleichen iNode aber nie vorkommen (es sei denn, jemand gibt als ziel- und quell-verzeichniss das gleiche an)
falls jemand weiss, wie das eleganter geht, freu ich mich ueber jeden tip.
sha-bang,
sbx
edit: jetzt hab ich schon den titel geändert. auch wenn bash nicht schön ist: icehouse, hairfeti, maceis, .woulion, wo seid ihr denn?
gruess euch,
hintergrund:
ein skript läuft stündlich (liegt in /etc/rc.d/cron.hourly) und kuckt, ob in einem verzeichniss neue dateien liegen. wenn ja, verschiebt es sie an einen anderen ort.
problem:
man weiss nicht, ob auf dem ziel-filesystem genug platz ist. muss man auch nicht, wenn das quell- und ziel-filesystem das gleiche sind (man brauch praktisch keinen platz für die aktion).
ist das ziel-filesystem ein anderes, ist es wichtig, zu prüfen, ob genug speicherplatz auf dem zieldateisystem zur verfügung steht, um die dateien dorthin zu verschieben.
bis jetzt mach ich das so
#!/bin/bash
#
# ein skript das kuckt, ob das zieldateisystem
# das gleiche ist wie das quelldateisystem
#
# begin
# ein paar variablen
SOURCE_DIR='/var/log'
TARGET_DIR='/tmp'
# Quell-Dateisystem feststellen mittels missbrauchung von 'df':
SOURCE_FS=`df $SOURCE_DIR | grep -v -e 'Filesystem' | awk '{ print substr($1,0) }'`
# Das gleiche Spiel fürs Zieldateisystem:
TARGET_FS=`df $TARGET_DIR | grep -v -e 'Filesystem' | awk '{ print substr($1,0) }'`
# Vergleichen + entsprechend reagieren
if [ $SOURCE_FS != $TARGET_FS ]; then
echo ungleich
else
echo gleich
fi
meine frage:
geht das nicht einfacher? ich mein' damit jetzt nicht, den conditional soweit aufzublasen, bis er in eine zeile passt
mit dem statement '-ef' kann man in einem if-test ja feststellen, ob zwei dateien den gleichen iNode _und_ das gleiche filesystem haben. in meinem fall wird das mit dem gleichen iNode aber nie vorkommen (es sei denn, jemand gibt als ziel- und quell-verzeichniss das gleiche an)
falls jemand weiss, wie das eleganter geht, freu ich mich ueber jeden tip.
sha-bang,
sbx
edit: jetzt hab ich schon den titel geändert. auch wenn bash nicht schön ist: icehouse, hairfeti, maceis, .woulion, wo seid ihr denn?
Zuletzt bearbeitet: