i-have-a-dreambox.com | Dreambox - Support

Registrierung Kalender Mitgliederliste Teammitglieder Galerie Zum Portal Zur Startseite

Boardregeln Häufig gestellte Fragen Statistik Statistik Suche Pinwand Dreambox Blog Ihad/Gemini Fan-Shop
i-have-a-dreambox.com | Dreambox - Support » ...::: Dreambox Software :::... » Dreambox Skripte » Script zum kopieren von Dateien » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen
Seiten (2): « vorherige 1 [2] Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Script zum kopieren von Dateien
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Bundy00
User


Dabei seit: 26.03.2008
Beiträge: 180
Welche Box: DM520; DM900
Externe Speichermedien: USB-Stick; SSD; NAS
Welches Image: OE 2.5
Welcher Bildschirm: Philips 46er 9704

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Und als Tip beim entwickeln/testen des Skriptes:

- Nutze "#" um eigene "Erinnerungen" zu hinterlassen. ;-)
- Nutze "echo" VOR den auszuführenden Kommandos beim testen, wenn kritische Dinge wie Löschen o.ä., welches sich aus Variablen ergibt, um vor Überraschungen gefeit zu sein (Huch, wieso ist jetzt DAS gelöscht :-)). Wenn alles klappt, dann halt wieder entfernen
- Auch nützlich zur Fehlersuche und immer gern vergessen: Im Skript das Kommado "set -x" zu Beginn einbauen oder alternativ "bash -x <skriptname>"
11.01.2017 13:39 Bundy00 ist offline E-Mail an Bundy00 senden Beiträge von Bundy00 suchen Nehmen Sie Bundy00 in Ihre Freundesliste auf
Fred Bogus Trumper
V.I.P.


images/avatars/avatar-19401.png

Dabei seit: 15.12.2008
Beiträge: 2.163
Welche Box: DM500; DM800se; DM900; DM7020HD
Externe Speichermedien: USB-Stick; SD-Card; HDD; NFS
Welches Zubehör: Netgear WNCE2001, DMM Tastatur (de), Logitech Harmony, Eigenbau NAS
Welches Image: Sonstige

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

das mit dem cp -u stimmt schon

aber er hat ja zwei srcipte, restore und backup. Beim Backup mit cp -u oder rsync kopieren, es werden also nur geänderte Dateien gesichert. Im restore einfach mit cp -a kopieren, quasi ein "force" zurücksichern, egal wie alt bzw. wie groß die Datei ist.

Wenn es Textdateien wie (python)scripte, config files etc. sind, könnte man auch mit diff die Dateien vergleichen, dass heisst es wird nur dann kopiert, wenn sich der Inhalt geändert hat.


Das mit rsync war nur ein Beispiel, wie man das einfacher lösen könnte - ohne deine Regex, wenn es cp -u nicht gibt. Man kann das über viele Wege lösen - wie gesagt, je nach Möglichkeiten und Kenntnissen. Wichtig ist nur, dass das Ergebnis stimmt.

Wie man dann ein script mit Schleifen und Variablen "verschlankt" kommt dann irgendwann sowieso von selbst, wenn man tippfaul ist Augenzwinkern

Der nächste Schritt ist dann "Schalter" ins Script einzubauen, damit man nicht zwei scripte hat, das eine Script wird dann aber schneller unübersichtlich, wenn man schlecht oder gar nicht kommentiert

z.B.
/usr/script/script.sh --backup
/usr/script/shript.sh --restore

__________________
Gruß Fred

Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von Fred Bogus Trumper: 11.01.2017 14:07.

11.01.2017 14:03 Fred Bogus Trumper ist offline Beiträge von Fred Bogus Trumper suchen Nehmen Sie Fred Bogus Trumper in Ihre Freundesliste auf
latte latte ist männlich
Dreamer


Dabei seit: 03.09.2005
Beiträge: 1.121
Welche Box: DM7020HD; DM7080HD
Externe Speichermedien: keine
Welches Image: OE 2.2; OE 2.0; DMM original; Merlin

Themenstarter Thema begonnen von latte
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi,

Danke für eure Tipps. Ich werde es auf jedenfall mal angehen. Das Problem ist im Moment die Zeit. Jetzt werde ich mich erstmal etwas einlesen in die Materie.
Auch werde ich mich bei den ersten Fehlversuchen wieder melden. Mein größtes Problem ist das ich immer einfach zu viel will für den Anfang und irgendwann wird es frustrierend wenn es nicht weitergeht aber dafür seid ihr dann da. Augenzwinkern

__________________
MfG
latte

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von latte: 11.01.2017 22:48.

11.01.2017 22:46 latte ist offline E-Mail an latte senden Beiträge von latte suchen Nehmen Sie latte in Ihre Freundesliste auf
Fred Bogus Trumper
V.I.P.


images/avatars/avatar-19401.png

Dabei seit: 15.12.2008
Beiträge: 2.163
Welche Box: DM500; DM800se; DM900; DM7020HD
Externe Speichermedien: USB-Stick; SD-Card; HDD; NFS
Welches Zubehör: Netgear WNCE2001, DMM Tastatur (de), Logitech Harmony, Eigenbau NAS
Welches Image: Sonstige

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Da muss man durch, wenn man es will. Man lernt ja nicht nur scripten, sondern lernt commandos und Annehmlichkeiten der shell die man nicht für möglich hielt. Ausserdem muss man sich dann irgendwann auch mit dem Linux kernel befassen und versteht viel besser, wie ein Computer oder ein Betriebssystem funktoniert - zumindest ging es mir so.

Für ein 6 zeiliges Script, für das du heute 2 Tage benötigst, weil du nur am googeln und lesen bist benötigst du in ein, zwei Jahren 5 Minuten und schüttelst das Script einfach aus dem Ärmel ohne die commands vorher zu testen - und es funktioniert dann sogar beim 1. Aufruf ohne Fehlermeldung

Ich tappte 4 Jahre lang auch völlig im Dunkeln was Linux/Scripte anging und war froh das meine Dreambox lief - bis vor mich vor ca. 6 Jahren mehr damit zu beschäftigen begann, weil irgendetwas nicht so funktionierte wie ich wollte und es keine fertige Lösung gab oder ich sie nicht gefunden habe. Mitlerweile laufen auf meinen Boxen ein paar Sachen die auf keiner anderen Box zu finden sind. Das Meisten davon über Scripte gelöst, weil ich damit von Anfang an am besten klar kam. Ich habe z.B. meinen eigenen "networkmount daemon" gescriptet, weil ich weder mit autofs (auto.network bzw. auto.gemini) geschweige mit dem Netzwerkbrowser 100% glücklich war. Nie wieder nicht eingebundene Netzwerk shares beim Booten oder Dauerspinner weil ein share nicht (mehr) erreichbar war.

Für mich ich das einfach ein Hobby geworden. Vielleicht wird es das bei dir auch.

Viel Spaß beim Tüfteln und Ärgern Augenzwinkern

__________________
Gruß Fred

Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von Fred Bogus Trumper: 12.01.2017 00:32.

12.01.2017 00:27 Fred Bogus Trumper ist offline Beiträge von Fred Bogus Trumper suchen Nehmen Sie Fred Bogus Trumper in Ihre Freundesliste auf
latte latte ist männlich
Dreamer


Dabei seit: 03.09.2005
Beiträge: 1.121
Welche Box: DM7020HD; DM7080HD
Externe Speichermedien: keine
Welches Image: OE 2.2; OE 2.0; DMM original; Merlin

Themenstarter Thema begonnen von latte
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi,

so hier mal der erste Entwurf. Ich weiß etwas übertrieben für den Anfang aber ich sagte ja das ich immer ziemlich viel will wenn ich erst mal angefangen habe. Zunge raus
Beim lesen kommt man ja auf die seltsammsten Ideen.
Aber für heute ist erstmal Schluss, komischerweise wollte die if Schleife nicht, naja wenn man die Variable in Anführungszeichen setzt kein Wunder.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
#!/bin/bash

#Restore Test

clear
echo "Gepatchte Dateien werden jetzt wiederhergestellt!"
echo
FS=$(stat -c%s /usr/lib/enigma2/python/Components/UsageConfig.py)
echo "Die Dateigröße beträgt:" $FS
echo
if [ $FS == "17353" ];
	then
		echo "Dateigröße stimmt, jetzt kopieren?"
		read -p "Wirklich kopieren? (J/N): " antwort
			case "$antwort" in
					Ja|ja|J|j|"") 	echo "Ok los geht's"
									cp -f /media/hdd/save/usr/lib/enigma2/python/Components/UsageConfig.py_Merlin4_gepatcht /usr/lib/enigma2/python/Components/UsageConfig.py
									echo
									echo "Wiederherstellung beendet!"
						;;
					No|no|N|n) 	echo "Abbruch."
								exit 1
						;;
						*) 		echo "Unbekannter Parameter" 
						;;
			esac

	else
		echo "Dateigröße stimmt nicht, bitte Datei überprüfen!"
fi






#cp -f /media/hdd/save/usr/lib/enigma2/python/Plugins/Extensions/CutListEditor/__init__.py_gepatcht /usr/lib/enigma2/python/Plugins/Extensions/CutListEditor/__init__.py
#cp -f /media/hdd/save/usr/lib/enigma2/python/Plugins/Extensions/CutListEditor/plugin.py_gepatcht /usr/lib/enigma2/python/Plugins/Extensions/CutListEditor/plugin.py
#cp -f /media/hdd/save/usr/lib/enigma2/python/Plugins/Extensions/CutListEditor/keymap.xml_gepatcht /usr/lib/enigma2/python/Plugins/Extensions/CutListEditor/keymap.xml
#cp -f /media/hdd/save/usr/lib/enigma2/python/Plugins/Extensions/NameZap/plugin.py_gepatcht /usr/lib/enigma2/python/Plugins/Extensions/NameZap/plugin.py
echo "Script beendet!"


__________________
MfG
latte
12.01.2017 10:52 latte ist offline E-Mail an latte senden Beiträge von latte suchen Nehmen Sie latte in Ihre Freundesliste auf
juanito_perez
Betatester


images/avatars/avatar-19612.png

Dabei seit: 10.06.2008
Beiträge: 1.482
Welche Box: DM900; DM8000
Externe Speichermedien: CF-Card; HDD; NAS
Welches Zubehör: QNAP TS-569L
Welches Image: DMM original
Welcher Bildschirm: Sony KDL-46Z4500

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo latte,

Gratuliere, da biste aber schon ein deutliches Stücke vorangekommen.

Ein paar Gedanken meinerseits als Anregung:

1) Du kopierst ja immer die gleichen Dateien von A->B oder B->A...

Wenn ich es richtig sehe, dann behältst Du auch im Backup die Verzeichnisstruktur.
Wie wäre es die Dateien in Variablen zu packen?

code:
1:
2:
3:
4:
5:
6:
7:
8:
FILE1="/usr/lib/enigma2/python/Components/UsageConfig.py_Merlin4_gepatcht"
BACKUPSUFFIX="/media/hdd/save"

# Im Backup-Fall könntest du dann wie folgt kopieren:
#cp -f $FILE1 $BACKUPSUFFIX$FILE1
# im Restore-Fall :
cp -f $BACKUPSUFFIX$FILE1 $FILE1
Verwendest Du für die Dateivariablen ein Array, dann kannst Du einfach alle Dateien in einer Minischleife nacheinander kopieren lassen.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
#!/bin/bash

ADAT=(
        /home/jp/_tst/datei1.txt
        /home/jp/_tst/datei2.txt
        /home/jp/_tst/datei3.txt
)

for DATEI in ${ADAT[@]}; do
	echo $DATEI
done
Klappt das, dann kann man aus dem Script sehr einfach ein Backup und Restore in eins machen smile

Möchtest Du die Dateigröße nur für eine Datei checken oder für alle?
Und ist das wirklich nötig? Wäre nicht ein Vergleich der Dateien günstiiger? Dann bräuchtest Dich nicht um die Dateigrößen kümmern und diese im Script hinterlegen Augenzwinkern

__________________
Grüße
...jp

DM900 / OE2.5 Experimental ... und sehr glücklich damit Augenzwinkern

Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von juanito_perez: 12.01.2017 13:37.

12.01.2017 12:59 juanito_perez ist offline E-Mail an juanito_perez senden Beiträge von juanito_perez suchen Nehmen Sie juanito_perez in Ihre Freundesliste auf
Fred Bogus Trumper
V.I.P.


images/avatars/avatar-19401.png

Dabei seit: 15.12.2008
Beiträge: 2.163
Welche Box: DM500; DM800se; DM900; DM7020HD
Externe Speichermedien: USB-Stick; SD-Card; HDD; NFS
Welches Zubehör: Netgear WNCE2001, DMM Tastatur (de), Logitech Harmony, Eigenbau NAS
Welches Image: Sonstige

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

wow, sieht schon super aus *respekt*

kleine Anregung meinerseits zur case Abfrage
das y/n mit einem Tastendruck - ohne Enter zur Bestätigung und für die Eingabe ist nur ein Zeichen erlaubt, alles andere führt zum Abbruch

und ein Beispiel, wie man mit echo code sparen kann, vor allem damit es übersichtlich bleibt
echo -e "\nstring" = new line and string
echo -e "\tstring\n" = tab string and new line at the end

ist aber nicht notwendig

z.B.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
		read -p "Wirklich kopieren? (j/n): " -n 1 antwort && echo		
                         case "$antwort" in 
                                       [J|j|Y|y])
                                                echo "Ok los geht's"
					        cp -f /media/hdd/save/usr/lib/enigma2/python/Components/UsageConfig.py_Merlin4_gepatcht /usr/lib/enigma2/python/Components/UsageConfig.py
                                                echo -e "Wiederherstellung beendet!"\n"
						;;
					*) 	echo "Unbekannter Parameter!\nAbbruch"
						exit 1
						;;
			esac


__________________
Gruß Fred

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Fred Bogus Trumper: 12.01.2017 14:28.

12.01.2017 14:26 Fred Bogus Trumper ist offline Beiträge von Fred Bogus Trumper suchen Nehmen Sie Fred Bogus Trumper in Ihre Freundesliste auf
LottenTV LottenTV ist männlich
Fortgeschrittener


images/avatars/avatar-19562.jpg

Dabei seit: 09.09.2004
Beiträge: 457
Welche Box: DM500HD
Externe Speichermedien: HDD
Welches Zubehör: Denon AVR-X2200W
Welches Image: Merlin
Welcher Bildschirm: 39" Toshiba
Herkunft: zu Hause

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich sichere so meine EPG!

Sichern:

init 4 && sleep 5 && rm /media/hdd/backup/epg.dat && cp -f /media/hdd/epg.dat /media/hdd/backup/epg.dat && sleep 5 && init 3


Restore:

init 4 && sleep 5 && cp -f /media/hdd/backup/epg.dat /media/hdd/epg.dat && sleep 5 && init 3

__________________
MfG
12.01.2017 20:55 LottenTV ist offline Beiträge von LottenTV suchen Nehmen Sie LottenTV in Ihre Freundesliste auf
Seiten (2): « vorherige 1 [2] Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
i-have-a-dreambox.com | Dreambox - Support » ...::: Dreambox Software :::... » Dreambox Skripte » Script zum kopieren von Dateien

Impressum | Team | Suchen | Hilfe


Powered by Burning Board 2.3.6 © 2001-2003 WoltLab GbR