Mit tar in das ursprüngliche Verzeichnis entpacken

Lumpi

Lumpi

Haudegen
Hallöchen

Ich bastel gerade an nem script für Datensicherungen.

Alles funzt soweit ganz gut, allerdings entpackt tar nur nach /datensicherung, wo meine saves liegen.
Das liegt daran, dass tar mein führendes slash ´/´ vor den Verzeichnissen entfernt.
Die Daten sollen jedoch dort wieder hin, wo ich sie zuvor her habe.
Wie kann ich nun tar beibringen, dieses slash wieder zu setzen?

Falls mir bei dieser Hitze noch zu helfen ist... ?( würde ich mich über Antworten freuen.

Zum besseren Verständnis poste ich mal die funktion
Code:
#!/bin/bash

function datenlesen()
{
clear;
echo;
save=
PS3="Welche Datensicherung zurücklesen?   "
cd /datensicherung
select save in *
clear
do echo $save
if [ -z "$save" ]
then 
$funktion datenlesen
fi
break;
done;
frage=
echo "Alle bereits vorhandenen Daten werden ohne weitere Abfragen überschrieben!"
echo -e "Möchten Sie dennoch fortfahren? j / n : \c"
read frage
    
if [ "$frage" = "n" ]
then
clear;
echo;
echo "Die Sicherung ´$save´ wurde nicht zurückgelesen!" 
$function ausgang
    elif [ "$frage" = "j" ]
    then
    tar -xzvf /datensicherung/$save  
    clear;
    echo
    echo "Das Zuruecklesen von $save war erfolgreich."
else
echo "Ende wegen Falscheingabe"
exit;
fi
}

Der User wird darüber informiert, dass seine vorhandenen Daten überschrieben werden.
Jedoch würde ich auch gern die JA / NEIN Abfrage etwas perfektionieren.
Momentan bricht das script bei einer Falscheingabe mit einer Fehlermeldung ab.

Ich glaube, das ich das mit while -do realisieren kann.
Ich habe eine diesbezügliche Möglichkeit schon mal im Board gefunden.
Aber da mir scheinbar schon ein paar Hirnwindungen :D eingetrocknet sind kann ich mich nicht mehr erinnern wo. *grübel*

Ich werde mich erst einmal in das nächse Wasserloch versenken und wünsche Euch allen ein paar kühle Stunden.

Gruß Lumpi
 
Hallo
Wenn du den führenden Slash drin lassen willst, also absolute Pfade brauchst, dann kennt GNU tar die Option -P.
man tar:
-P, --absolute-names don't strip leading `/'s from file names
es gibt auch die Option -C
-C, --directory=DIR change to directory DIR


Zu deiner Abfrage solltest du bitte mal genauer sagen, was du willst und nicht hinbekommst.
Dann könnte dir sicher besser geholfen werden. ;)
Gruß Wolfgang
 
Hallo Wolfgang,

Wärend mir im See mein Hirn wieder auf Normalgröße quoll 8o , kam mir so in den Sinn:
Mann man tar. :respekt:

Ich danke dir für deinen Tipp, welcher sofort umgesetzt und erfolgreich getestet wurde.

Zu deiner Abfrage solltest du bitte mal genauer sagen, was du willst und nicht hinbekommst.
Dann könnte dir sicher besser geholfen werden.

Nun ich versuche es mal zu skizzieren:

Der User soll entscheiden, ob das zurücklesen durchgeführt werden soll oder nicht.

Momentan fange ich nur ´j´ oder ´n´ mit meinem code ab
bei einer anderen Eingabe zum Beispiel ´x´ läuft folgendes ab

Code:
If ["§frage" = "j" ]
dann Anweisung
elif ["§frage" = "n" ]
dann Anweisung
else
echo "Ende wegen Falscheingabe"
exit;
fi

Mein eigenes "echo" bezeichnete ich unüberlegter weise im vorherigen Posting als Fehlermeldung ;)

Ich würde jedoch ganz gerne NUR die beiden gültigen Eingaben /also nur j / n ) zulassen und alles andere ignorieren.

Also dieses Prinzip
Code:
frage=
echo "Alle bereits vorhandenen Daten werden ohne weitere Abfragen überschrieben!"
echo -e "Möchten Sie dennoch fortfahren? j / n : \c"
read frage
[B]
jetzt warte solange, bis  Eingabe "j" oder "n"  ist  

ERST dann [/B]

If ["§frage" = "j" ]
dann Anweisung
elif ["§frage" = "n" ]
dann Anweisung
fi

Nur ich habe momentan keinen Plan, wie ich das umsetzen muss /kann.
Ich hoffe, dass dir mit meiner konfusen Schreibweise mein Ziel klar geworden ist. :brav:

Ich habe wieder nen Hitzestau mit gleichzeitiger Denkblockade. :rofl:

Gruß Lumpi

EDIT:
Ich habe die Lösung gefunden beziehungsweise liegt sie schon im script, da ich mein menu so aufgebaut habe.

Code:
Auswahl der Datensicherung

echo "Alle bereits vorhandenen Daten werden ohne weitere Abfragen überschrieben!"
PS3="Möchten Sie dennoch fortfahren?   "

echo;
    select auswahl in "ja" "nein" 
    do echo

    case $auswahl in

		"ja" ) tar -xPzvf /datensicherung/$save; break;;
				
		"nein" ) break;;

    esac
    done

Danke trotzdem für die Hilfe

Gruß Lumpi
 
Zuletzt bearbeitet:

Ähnliche Themen

script sshpass

Verschlüsseltes Backup-Script mit rsync

HandbrakeCLI Shell Skript

[gelöst] - for file in ... nur für bestimmte Endungen?

Crontab und Scripts - Problem

Zurück
Oben