• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

-thunderbird packen als sicherung und wieder rücksichern

Hi,

Ich Probier seit tagen das .thunderbird Profil zu sichern in einer ZIP datei und dann wieder zurücksichern .

zip -r ~/Arbeitsfläche/Backup-System/Thunderbird_`date +%d.%m.%Y`.zip ~/.thunderbird

Das klappt auch .

Weiß leider fehl schlägt ist die rücksicherung .

unzip Thunderbird_`date +%d.%m.%Y`.zip -d ~/

Ich bin auch kein Linux Profi und wollte mir nur ein Sicherungs Script bauen .

Vieleicht haben hier einige mehr ideen .

mfg
 
A

Anonymous

Gast
CaptainFuture schrieb:
Weiß leider fehl schlägt ist die rücksicherung .

unzip Thunderbird_`date +%d.%m.%Y`.zip -d ~/

Der Befehl ist soweit in Ordnung.
was schlögt hier genau fehl. Soweit mir da was einfällt, könnten folgende Probleme auftauchen.
  • * ein Namensproblem, da du hier nur die Sicherung des aktuellen Tages ansprichst wegen des date-Befehls im Namen
    * wenn du das im Script im Hintergrund oder als cron machen willst, bleibt das Ding stehen. unzip überschreibt per default keine Dateien, das muss du ihm mit Optionen ( zB. mittels -o ) oder interaktiv per Antwort auf die Rückfrage angeben(was im Script nicht geht), oder das Zielverzeichnis muss vorher weg.

robi
 
OP
CaptainFuture

CaptainFuture

Newbie
Hi,

Die rücksicherung geht nicht zum Ursrpungsort .

Hier nochmal das ganze Script :
Code:
#!/bin/bash
# - 16.12.2013 -
# CaptainFuture www.linux-club.de
clear
#### Verzeichnis Überprüfen auf vorhanden / Anlegen ...

# Erstmal abgeschaltet wegen fehler
# PATH_DIR=~/Arbeitsfläche/Backup-System
#
# if [ -d $PATH_DIR ]; then
#  echo "Das Verzeichnis ist nicht vorhanden"
#	echo "Verzeichnis angelegt ..."
#  mkdir ~/Arbeitsfläche/Backup-System
#	exit
# else
#  echo "Dein Verzeichnis ist vorhanden"
# fi
# sleep 4




## Menu Aufbau
## ----------------------------------

show_menus() {
	echo "~~~~~~~~~~~~~~~~~~~~~"	
	echo ".thunderbird Profil "
	echo " Sicherung/Rücksicherung"
	echo "~~~~~~~~~~~~~~~~~~~~~"
	echo "1. Sicherung"
	echo "2. Rücksicherung"
	echo "3. Exit"
}
##################################################

read_options(){
	local choice
	read -p "Nr.: [ 1 - 3] " choice
	case $choice in

		############1###########		
		1) echo "Sicherung ..."
           zip -r ~/Arbeitsfläche/Backup-System/Thunderbird_`date +%d.%m.%Y`.zip ~/.thunderbird
        ;;

		############2###########
		2) echo "Rücksicherung ..."
		unzip Thunderbird_`date +%d.%m.%Y`.zip -d ~/
		;;


		############3###########
		3) exit 0;;
		*) echo -e "${RED}Fehler...${STD}" && sleep 2
	esac
}
 

####################################################
# ----------------------------------------------
# Step #3: Trap CTRL+C, CTRL+Z and quit singles
# ----------------------------------------------
trap '' SIGINT SIGQUIT SIGTSTP
 
# -----------------------------------
# Step #4: Main logic - infinite loop
# ------------------------------------
while true
do
 
	show_menus
	read_options
done

Fehler Meldung 1:
Jetzt habe Ich noch eine Überprüfung des Ordners eingefügt leider gibt es da auch ein Fehler .
Das mit Datum ich weiß werde es vielleicht noch ändern oder das man das mit einer Bash Auswählen kann bei der Rücksicherung , Wenn das Überhaupt geht .

Leider bin ich nicht so gut in Bash viel mehr ein Anfänger !

Edit:

Fehler Meldung 2:
unzip: cannot find or open Thunderbird_16.12.2013.zip, Thunderbird_16.12.2013.zip.zip or Thunderbird_16.12.2013.zip.ZIP.

Script und Sicherungen befinden sich in denn Selben Ordner auf der Arbeitsfläche/Backup-System

Edit:

Habe grade durch zufall gesehen das alles in:

/home/mike/home/mike

angelegt worden ist aber das ist falsch es sollte /home/mike/ sein


Der Inhalt der Gepackten Datei sieht so aus :

home
mike
.thunderbird
 

josef-wien

Ultimate Guru
Wenn das Archiv nur den relativen Pfad beinhalten soll, mußt Du Dich im Verzeichnis ~ befinden und dort das Archiv erstellen:
Code:
cd ~
zip -r ~/Arbeitsfläche/Backup-System/Thunderbird_$(date +%d.%m.%Y).zip .thunderbird
P. S. Brauchst Du das Archiv in Windows, weil Du zip verwendest?
 
OP
CaptainFuture

CaptainFuture

Newbie
Nein kein Windows Linux zip ist nur durch zufall gewählt kann auch ein anderes pack programm benutzt werden !
 
OP
CaptainFuture

CaptainFuture

Newbie
josef-wien schrieb:
Wenn das Archiv nur den relativen Pfad beinhalten soll, mußt Du Dich im Verzeichnis ~ befinden und dort das Archiv erstellen:
Code:
cd ~
zip -r ~/Arbeitsfläche/Backup-System/Thunderbird_$(date +%d.%m.%Y).zip .thunderbird
P. S. Brauchst Du das Archiv in Windows, weil Du zip verwendest?

Jetzt wird gepackt ohne home/mike schon viel besser danke !

@Feuervogel das ist nett aber Ich wollte mir selber ein Script zusammen bauen weil Ich noch einige sachen dazu Packen möchte wie z.b. Firefox Profil usw.

Aber erstmal mit thunderbird hinkriegen !

Ich mache einen Fehler bei unzip

unzip birthdays_$(date +%d.%m.%Y).zip -d ~/

( birthdays ist eine Geburtstags Text Datei nur zum testen damit erstmal nichts mit thunderbird passiert , ist nur zum Testen ob das zurücksichern geht )

Kommt aber folgender Fehler:

Archive: birthdays_16.12.2013.zip
inflating: /home/mike/.birthdays

Datei wird aber Trotzdem entpackt !
 

Feuervogel

Hacker
CaptainFuture schrieb:
@Feuervogel das ist nett aber Ich wollte mir selber ein Script zusammen bauen weil Ich noch einige sachen dazu Packen möchte wie z.b. Firefox Profil usw.

Hallo CaptainFuture,

geht in Ordnung. Viele Wege führen nach Rom ...

Gruß
Feuervogel
 
OP
CaptainFuture

CaptainFuture

Newbie
Habe grade ein Brett vor Kopf

Das endpacken geht garnicht mehr und wenn kann Ich die Datei nicht überschreiben wenn Sie exestiert !


Wenn Ich direkt in Ordner Springe geht das :

Code:
unzip -o birthdays_$(date +%d.%m.%Y).zip -d ~/

Aber z.b. Das geht nicht :

Code:
unzip -o ~/Arbeitsfläche/birthdays_$(date +%d.%m.%Y).zip -d ~/

Frage muß ich wieder mit
Code:
CD
Arbeiten wie OBEN ?
 
OP
CaptainFuture

CaptainFuture

Newbie
Ja danke allen , Es war mein Fehler Pfad angabe war nicht richtig !

Jetzt noch 2 Punkte und es ist Fertig .

1. Ordner Überprüfung ob der Vorhanden ist
Code:
# Erstmal abgeschaltet wegen fehler
# PATH_DIR=~/Arbeitsfläche/Backup-System
#
# if [ -d $PATH_DIR ]; then
#  echo "Das Verzeichnis ist nicht vorhanden"
#   echo "Verzeichnis angelegt ..."
#  mkdir ~/Arbeitsfläche/Backup-System
#   exit
# else
#  echo "Dein Verzeichnis ist vorhanden"
# fi
# sleep 4

2. gibt es die Möglichkeit über Bash auch eine Auswahl zu kriegen was man z.b. rücksichern möchte .
Weil in Monenet kann man nur das Aktuelle datum zurücksichern !

z.b.

Thunderbird_12.12.2013
Thunderbird_14.12.2013
Thunderbird_16.12.2013
Thunderbird_18.12.2013

Es würde z.b. nur Thunderbird_16.12.2013 gehen also von heute !
 

josef-wien

Ultimate Guru
Zu 1.: Abgesehen davon, daß der Inhalt von then und else vertauscht ist: Was ist Dein Problem?

Zu 2.: Primitiv: Verzeichnisinhalt anzeigen, Benutzer macht eine Eingabe (z. B. das Datum), die Du mit read VARIABLENNAME erhältst.
Elegant: Verzeichnisinhalt in ein array einlesen, array anzeigen, und vom Benutzer das gewünschte Element benennen lassen.

Du solltest Dich mit http://tldp.org/LDP/abs/html/index.html beschäftigen.
 

framp

Moderator
Teammitglied
josef-wien schrieb:
...Du solltest Dich mit http://tldp.org/LDP/abs/html/index.html beschäftigen.
Kann ich auch nur empfehlen :thumbs:
Parallel zur Studie des Links kannst Du Dir ja mal den folgenden CodeSnippet ansehen ;) :
Code:
#!/bin/bash

files=(*)
i=0
for file in "${files[@]}"; do
	echo "$i: $file"
	(( i++ ))
done
let max=${#files[*]}-1

answer=""
inputOK=0
while (( ! $inputOK )); do
	echo -n "Please enter 0-$max: "
	read answer
	if [[ ! $answer =~ ^-?[0-9]+$ ]]; then
		continue
	fi
	(( $answer >= 0 && $answer <= $max )) && inputOK=1
done

echo "You selected ${files[$answer]}"
 
OP
CaptainFuture

CaptainFuture

Newbie
Erstmal allen einen Riesen Dank ! ( Internetseite werde Ich mir auch noch ansehen )

Ich hätte nicht gedacht das Ich das hin kriege ! Aber es hat doch geklappt ;-)

@framp Danke hat mir sehr geholfen !

Kennt Ihr seiten mit vielen Script Beispielen ?

Hier das Fertige Script :

Code:
#!/bin/bash
# - 16.12.2013 -
# CaptainFuture www.linux-club.de
clear
#### Verzeichnis Überprüfen auf vorhanden / Anlegen ...

echo "Überprüfen ob Verzeichnis existiert!"
echo " "
if test -d ~/Arbeitsfläche/Backup-System/$1; then
    echo "Verzeichnis vorhanden";
else
    mkdir ~/Arbeitsfläche/Backup-System/$1;
    echo "Verzeichnis erstellt";
fi

## Menu Aufbau
## ----------------------------------

show_menus() {
   echo "~~~~~~~~~~~~~~~~~~~~~"   
   echo ".thunderbird Profil "
   echo " Sicherung/Rücksicherung"
   echo "~~~~~~~~~~~~~~~~~~~~~"
   echo "1. Sicherung"
   echo "2. Rücksicherung"
   echo "3. Exit"
}
##################################################

read_options(){
   local choice
   read -p "Nr.: [ 1 - 3] " choice
   case $choice in

      ############1###########      
      1) echo "Sicherung ..."
           zip -r ~/Arbeitsfläche/Backup-System/Thunderbird_`date +%d.%m.%Y`.zip ~/.thunderbird
        ;;

      ############2###########
      2) echo "Rücksicherung ..."
		files=(~/Arbeitsfläche/Backup-System/T*)
		i=0
		for file in "${files[@]}"; do
		echo "$i: $file"
   		(( i++ ))
		done
		let max=${#files[*]}-1
		answer=""
		inputOK=0
		while (( ! $inputOK )); do
		echo -n "Please enter 0-$max: "
		read answer
		if [[ ! $answer =~ ^-?[0-9]+$ ]]; then
	    continue
		fi
		(( $answer >= 0 && $answer <= $max )) && inputOK=1
		done

		echo "You selected ${files[$answer]}"
		unzip -o ${files[$answer]} -d ~/
      ;;


      ############3###########
      3) exit 0;;
      *) echo -e "${RED}Fehler...${STD}" && sleep 2
   esac
}
 

####################################################
# ----------------------------------------------
# Step #3: Trap CTRL+C, CTRL+Z and quit singles
# ----------------------------------------------
trap '' SIGINT SIGQUIT SIGTSTP
 
# -----------------------------------
# Step #4: Main logic - infinite loop
# ------------------------------------
while true
do
 
   show_menus
   read_options
done
 

framp

Moderator
Teammitglied
CaptainFuture schrieb:
... ( Internetseite werde Ich mir auch noch ansehen ) ...
crossing fingers :roll: Dann verstehe was da im Code passiert - und wenn Du Verständnisprobleme hast - frage einfach damit Du das zukünftig selbst hinbekommst :wink:
 
OP
CaptainFuture

CaptainFuture

Newbie
Eine frage habe Ich doch noch .
Code:
files=(*)
i=0
for file in "${files[@]}"; do
   echo "$i: $file"
   (( i++ ))
done
let max=${#files[*]}-1

answer=""
inputOK=0
while (( ! $inputOK )); do
   echo -n "Please enter 0-$max: "
   read answer
   if [[ ! $answer =~ ^-?[0-9]+$ ]]; then
      continue
   fi
   (( $answer >= 0 && $answer <= $max )) && inputOK=1
done

echo "You selected ${files[$answer]}"

Kann man das auch so ändern das z.b. 2 oder 3 gezippe files zurück gesichert werden mit verschieden namen ?

z.b.

Jetzt wird so rückgesichert .
1. Thunderbird_16.12.2013.zip
2. Thunderbird_17.12.2013.zip

Was ist wenn man aber z.b. das Script erweitert und bei der rücksicherung noch firefox mit rücksichern möchte :

1. Thunderbird_16.12.2013.zip
2. Thunderbird_17.12.2013.zip
3. Firefox_16.12.2013.zip
4. Firefox_17.12.2013.zip

Also 2 und 4 sollen für die rücksicherung übernommen werden !
 

framp

Moderator
Teammitglied
Gibt verschiedene Ansaetze:

1) Eingabe der gewählten Dateien mit einem mal (z.B. '5 8 9') mit Leerzeichen getrennt. Danach splitten der Eingabe in ein Array.
2) Wiederholte Abfrage und Sammlung der Auswahl in einem array. Leereingabe beendet die Auswahl.

Dann Abarbeiten des Arrays erstellt in 1 oder 2.
 

framp

Moderator
Teammitglied
Nicht aufgeben, lesen, ausprobieren und fragen. Lies z.B. mal http://stackoverflow.com/questions/10586153/bash-split-string-into-array. Das passt für 1 und 2 ;) Auch http://www.thegeekstuff.com/2010/06/bash-array-tutorial/. Dort sind die wesentlichen syntaktischen Konstrukte der bash mit arrays beschrieben.
 
Oben