[bash] Verzeichnisse rekursiv durchlaufren?

S

sourceCode

OMGWTFBBQ
Hallo zusammen,
ich versuche mir zur Zeit mit ein paar (Bash)Scripts einen *sicheren* Backupscript zu schreiben. Dazu müsste ich ein Verzeichniss (vorzugsweise mein home-dir ;)) rekursiv durchlaufen, mit openSSL ein bisschen rum-verschlüsseln, alles in /tmp/ kopieren und dann per rsync über SSH auf den Server kopieren.
Mir ist eigentlich fast alles klar, "Spielereien" wie .dateien nicht mithochladen lassen sich sicher ergooglen, aber ich zum Thema Verzeichnis rekursiv durchlaufen finde ich einfach garnichts.
Die Fuktion tree fällt leider weg.

Grüße, sourceCode
 
Mir ist bei deiner beschriebenen Anforderung nicht klar, warum du Verzeichnisse rekursiv durchlaufen willst?

Und warum so

azu müsste ich ein Verzeichniss (vorzugsweise mein home-dir ) rekursiv durchlaufen, mit openSSL ein bisschen rum-verschlüsseln, alles in /tmp/ kopieren und dann per rsync über SSH auf den Server kopieren.

kompliziert?

rsync nehmen und fertig ist die Laube, da musst du nix selber rekursiv durchlaufen.
 
Darum gehts mir aber nicht. :p
Ich will erst alles mit openSSL verschlüsseln, so das es dann verschlüsselt am Server liegt.
Grüße
 
Und warum nutzt du nicht find?

Dass du dazu nix gefunden hast, scheint mir unglaublich.

Gruß Wolfgang
 
^^^ Was Wolfgang sagt. Es gibt hier im Wochentakt Threads die sich mit find -exec und ähnlichem befassen. Die Beispiele anzupassen sollte recht leicht sein. Im letzten Thread haben sowohl Wolfi (sorry ;-) ) als auch ich gepostet. Die Manpage und google sollten dafür problemos ausreichen.
 
usertitel schrieb:
\o/
Allerdings gehört das zusammengeschrieben, sonst verliert das doch seine ganze LOLCAPSLOCKKTHXBAI-Wirkung.

(Für dieses Offtopic post nehme ich gerne Verwarnungen entgegen :* )
 
N'abend,

auch wenn das jetzt nicht ganz zum Thread Title passt hoffe ich trotzdem das mir jemand vlt einen Tipp gebe kann was ich da jetzt schon wieder falsch machen :O

Code:
algo="aes-256-ecb"

echo -n "Enter the Password for your files: " 
stty -echo   
read passwd

sudo find ~/test/ -exec openssl enc -$algo -e -v -out /anderes/dir/$2.enc -pass pass:$passwd  \;

Nur leider passiert da jetzt garnichts. Script läuft und hört nie mehr auf, zieht allerdings auch kein CPU.

$2 sollte eigentlich der Filename sein, damit das verschlüsselte File dann in /anderes/dir mit einem .enc hinten landet - aber ich weiß nicht wie ich den aktuellen Filename (=> der, der gerade verschlüsselt wird) bekomme um die Datei anschließend unter dem richtigen Namen wieder zu speichern.

@Gott_in_schwarz: Fixed.

Grüße
 
Zuletzt bearbeitet:
Nur Unsinn auf eine konkrete Frage...
Wenn ich mich nicht irre wollte er rekursiv und nicht find...
Problem: Funktion erhält bei Aufruf keinen neuen Speicher...
Lösung: Subshell Nachteil frisst Speicher ohne Ende (und langsam)
oder:
Eigene Variablen im Array (Rücksprungadressen sichern) -> nur quasi rekursiv:

Gruß Uli

BSP:

#!/bin/bash

declare -i ZAEHLER=0
declare -i ERLEDIGT=0

function DirScan
{
# hier koennte ein auszufuehrende Code stehen....

VERZEICHNISSE=` ls -ld * | awk '{ if( $1 ~/^drwx/ )
{ print $9 }
}'`

# Die Unterverzeichnisse in ein Array
for YYY in ${VERZEICHNISSE}
do
VERZEICHNIS[ZAEHLER]=`pwd`/${YYY} # der volle Pfad! sonst klapps beim
# Verzeichniswechsel nicht...
echo "Pfad ${ZAEHLER}: ${VERZEICHNIS[ZAEHLER]}" # zur Info...
ZAEHLER=${ZAEHLER}+1
done
}

function DoScan
{
DirScan

while [ ${ERLEDIGT} -lt ${ZAEHLER} ]
do
cd ${VERZEICHNIS[ERLEDIGT]}
ERLEDIGT=${ERLEDIGT}+1

echo "Verz: `pwd`"

echo "******* Erledigt: ${ERLEDIGT} von ${ZAEHLER}"
DoScan
done
}

DoScan
 
Hi,

ich weiss nicht wirklich ob es hier nach so vielen Monaten noch Sinn macht zu posten, aber gut...

Wenn ich mich nicht irre wollte er rekursiv und nicht find...
Im allgemeinen verstehe ich unter Rekursion angewendet auf Verzeichnisse, dass alle Unterverzeichnisse der Reihe nach abgearbeitet werden, und nicht dass es rekursiv programmiert sein soll.
Das kann find, ausserdem kannst du auch noch mitgeben ob du lieber depth-first oder breadth-first search haben willst, so dass das eine durchaus sinnvolle Antwort war. IMHO war die originale Frage fuer alles weitere auch einfach zu ungenau.

Kurz zur Form von deinem Skript: Es gibt hier im Board Code-Bloecke, die die Formatierung von Code erhalten, es waere nett wenn du die nutzen wuerdest. Beitraege kann man editieren.

Zur letzten Frage des TE faellt mir so direkt auch nicht viel ein, ausser dass man die Ausgabe wieder aktivieren sollte, bevor man irgendetwas anderes macht, dann bekommt man wenigstens auch ein wenig output. ;)

Wenn man schon mit stty Einstellungen rumspielen will, dann doch lieber mit Versicherung. ;)
Code:
oldmodes=$(stty --save)
stty -echo
read password
stty $oldmodes

Edit:
Ach ja, wir wollen ja nicht unhoeflich sein: Willkommen im Board. :)

mfg,
bytepool
 
Zuletzt bearbeitet:

Ähnliche Themen

Server-Monitoring mit RRDTool

Zurück
Oben