Ordner bis bestimnte Größe auf DVD brennen

M

maps523

Grünschnabel
Hi,

ich versuche ein Script zu basteln um einen Ordner ab einer bestimmten Größe und bis zu einer bestimmten Größe auf DVD zu brennen.
Der Teil des scripts wo es ums Brennen geht ist kein Problem, das kriege ich mit growisofs hin.
Die Frage ist jetzt nur wie krieg ich es hin zu überprüfen wann ein Ordner eine bestimmte Größe z.B. 4 GB überschritten hat und diesen dann auf DVD zu brennen BEVOR er eine Größe von über 4,7 GB hat.

Hintergrund ist Folgender: Auf einem Email-Server werden per Cron E-Mails archiviert und diese werden in einen Ordner nach dem Datum des Tages abgelegt. Jetzt wäre es super wenn ein anderer Cron Job überprüft ob der Ordner in dem die Tages-Sicherungen liegen schon über 4 GB hat und diesen dann auf DVD brennt.

Könnt ihr mir helfen?

Vielen Dank

Hab mich schon ein bisschen umgeschaut und den Beitrag Script durch Script starten lassen gefunden, darin wird ja etwas ähnliches besprochen, dort wird ein Ordner mit du auf seine Größe überprüft, aber leider hab ich die Syntax nicht gerafft bzw. das Skript nicht auf meine Bedürfnisse abändern können.
 
Hallo
Du kannst du -s dafür verwenden.
Z.B. Bevor du die nächste Datei in dieses Verzeichnis schreibst, prüfst du dessen Größe, addierst diese zur aktuellen Größe und testest auf die Maxgröße. Ist sie erreicht, dann leite Maßnahmen ein usw
Code:
max=4294967296;
filesize=$(wc -c datei);
dirsize= $(du -s /path/to/Folder);
sum=$(($filesize  + $dirsize));
if [ $sum -gt $max ]; 
then 
echo Verzeichnis voll;
 ....;
else 
#kopiere die Datei rein
fi

Das hier mal ganz ausführlich. Die Zahlen sind natürlich anzupassen.

Gruß Wolfgang
 
Zuletzt bearbeitet:
Hi Leute,

super Sache, so ein Forum

@wolfgang: glaube, damit haste meiner Ideenlosigkeit gleich neuen Wind gegeben, suche auch grad was, um Dateigrößen etc im Script zu berechnen.
Haste mal wieder zwei (oder noch mehr?) Fliegen mit einer Klappe :-)

nochmals Danke, Manfred
 
Ja und Blödsinn habe ich auch geschrieben, (gerade editiert).
Natürlich ist du - s statt df gemeint.
Ich werde langsam alt. ;)
 
Vielen Dank für die schnell Antwort.

Das Skript ist klasse, aber ein kleines Problem hab ich noch.

ich bekomme einen arith: syntax error: bei der IF Anweisung, weil die Variablen dirsize und filesize neben der Grösse leider auch die Pfade gespeichert haben.

Beispielsweise sieht die Ausgabe dann so aus:
arith: syntax error: "939432 /home/test/temp/KW38 + 12648 /home/test/datei1"

Fällt Dir dazu auch noch eine Lösung ein.

Vielen Dank
 
Lösungsansatz: siehe 'man cut'
Gruss
d22
 
Code:
filesize_(wc -l file|cut -d" " -f1);
dirsize dito.

Oder sparsamer einen Prozess weniger pro var:
Code:
 fs=($(wc -l file); 
echo ${fs[0]}
238
 
Zuletzt bearbeitet:
Zurück
Oben