lampux
Goto Top

Schleife für das Archivieren von Verzeichnissen mit Unrar-Rar (Shell)

Hallo zusammen,


ich habe bereits für das Entpacken eine Schleife geschrieben (in Shell): for f in *.rar;do unrar e -ad -o+ $f;done

Nun bräuchte ich für das Archivieren im Fomrat *.rar eine Schleife, die Ordnerstruktur sieht folgendermaßen aus:

In einem Verzeichnis test sind folgende Verzeichnisse z.B:

0015
Test0004
Baumfotos2010
KeineAhnung01
15

Diese Verzeichnisse sollten in *.rar Archive gepackt werden, also die Ausgabe sollte folgendes ausgeben:

0015.rar
Test0004.rar
Baumfotos2010.rar
KeineAhnung01.rar
15.rar

Die Parameter für das Packen von Rar-Archive sind: rar a [Ausgabedatei.rar] [~/Verzeichnis das hinzugefügt werden soll]

Könnt ihr mir viellecht eine Codelösung geben? face-smile

mfg Lampux

Content-Key: 153765

Url: https://administrator.de/contentid/153765

Printed on: April 19, 2024 at 22:04 o'clock

Member: micneu
micneu Oct 27, 2010 at 07:48:07 (UTC)
Goto Top
z.b. ich würde mir erstmal eine liste mit den verzeichnissen erstellen die ich sichern will (ist die bekannt oder nicht?)
ich gehe davon aus die struktur ist dünamisch bis auf bis auf das hauptverzeichnis.

bei zum testen:

/tmp
find /tmp/* -type d > rar.txt          # erstellt mir eine text datei in meinem aktuellen verzeichnis mit den namen der verzeichnissen die in /tmp liegen.
diese kannst du jetzt mit einer for schleife abarbeiten

als beispiel so:

#!/bin/bash

### erstellt rar dateien aus den verzeichnissen

DATEI=rar.txt
ZAEHLER=1
DEST=/tmp/
for i in $(cat $DATEI); do
    echo $ZAEHLER $i
    echo rar a $i.rar $i
    ZAEHLER=$(($ZAEHLER+1))
    
done

ich lasse zum testen nur den befehl als echo ausgeben so kann ich sehen was er draus macht.
ich würde jetzt noch die ausgabe in eine art logdatei schreiben und so kann ich jeden tag sehen was gepackt wurde.
möchtest du noch ein anderes ziel verzeichnis haben so solltest du mit sed noch die path angaben anpassen.

das könnte man noch mit einbauen:

sed -e "s/\/*.\///g;s/\///g" rar.txt  
entfernt den path

also könnte man es so lösen

#!/bin/bash

### erstellt rar dateien aus den verzeichnissen

DATEI=rar.txt
ZAEHLER=1
DEST=/backup/
SOURCE=/tmp/*

find $SOURCE -type d > rar.txt 

for i in $(cat $DATEI); do
    echo $ZAEHLER $i
    b=`echo $i | sed -e "s/\/*.\///g;s/\///g"`  
    echo rar a $DEST$b.rar $i
    ZAEHLER=$(($ZAEHLER+1))
    
done
gruß michael
Member: micneu
micneu Oct 29, 2010 at 18:33:10 (UTC)
Goto Top
und hast du schon getestet?

gruß michael
Member: micneu
micneu Apr 20, 2011 at 13:42:51 (UTC)
Goto Top
Habe es nochmal etwas überarbeitet face-smile

#!/bin/bash

### erstellt rar dateien aus den verzeichnissen

ZAEHLER=1
DEST=/tmp
SOURCE=/var/

for i in $(find "$SOURCE" -maxdepth 1 -type d); do  
    echo $ZAEHLER $i
    b=`echo $i | sed -e "s/\///g"`  
    echo rar a $DEST/$b.rar $i
    ZAEHLER=$(($ZAEHLER+1))
done