Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

02.12.2009, 22:49

Problem mit Backup-Script

Guten Abend,

ich probiere gerade dieses Backup-Script hier aus dem Forum aus.
Die Dateien und Ordner Pfade müssten eigentlich stimmen. Leider erhalte ich beim Start des Skrips aber follgenden Fehler:

Quellcode

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
sh backup-script.sh 
Backup ist nicht eingehängt           
Backup wird eingehängt                
kdialog: cannot connect to X server   
rsync  version 3.0.6  protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/                                     
Capabilities:                                                         
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,  
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,      
    append, ACLs, no xattrs, iconv, symtimes                          

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU   
General Public Licence for details.                                     

rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.                                 

Usage: rsync [OPTION]... SRC [SRC]... DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  or   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
  or   rsync [OPTION]... [USER@]HOST:SRC [DEST]                      
  or   rsync [OPTION]... [USER@]HOST::SRC [DEST]                     
  or   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]       
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect
to an rsync daemon, and require SRC or DEST to start with a module name.       

Options
 -v, --verbose               increase verbosity
 -q, --quiet                 suppress non-error messages
     --no-motd               suppress daemon-mode MOTD (see manpage caveat)
 -c, --checksum              skip based on checksum, not mod-time & size   
 -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)   
     --no-OPTION             turn off an implied OPTION (e.g. --no-D)      
 -r, --recursive             recurse into directories                      
 -R, --relative              use relative path names                       
     --no-implied-dirs       don't send implied dirs with --relative       
 -b, --backup                make backups (see --suffix & --backup-dir)    
     --backup-dir=DIR        make backups into hierarchy based in DIR      
     --suffix=SUFFIX         set backup suffix (default ~ w/o --backup-dir)
 -u, --update                skip files that are newer on the receiver     
     --inplace               update destination files in-place (SEE MAN PAGE)
     --append                append data onto shorter files                  
     --append-verify         like --append, but with old data in file checksum
 -d, --dirs                  transfer directories without recursing           
 -l, --links                 copy symlinks as symlinks                        
 -L, --copy-links            transform symlink into referent file/dir         
     --copy-unsafe-links     only "unsafe" symlinks are transformed           
     --safe-links            ignore symlinks that point outside the source tree
 -k, --copy-dirlinks         transform symlink to a dir into referent dir      
 -K, --keep-dirlinks         treat symlinked dir on receiver as dir            
 -H, --hard-links            preserve hard links                               
 -p, --perms                 preserve permissions                              
 -E, --executability         preserve the file's executability                 
     --chmod=CHMOD           affect file and/or directory permissions          
 -A, --acls                  preserve ACLs (implies --perms)                   
 -o, --owner                 preserve owner (super-user only)                  
 -g, --group                 preserve group                                    
     --devices               preserve device files (super-user only)           
     --specials              preserve special files                            
 -D                          same as --devices --specials                      
 -t, --times                 preserve modification times                       
 -O, --omit-dir-times        omit directories from --times                     
     --super                 receiver attempts super-user activities           
 -S, --sparse                handle sparse files efficiently                   
 -n, --dry-run               perform a trial run with no changes made          
 -W, --whole-file            copy files whole (without delta-xfer algorithm)   
 -x, --one-file-system       don't cross filesystem boundaries                 
 -B, --block-size=SIZE       force a fixed checksum block-size                 
 -e, --rsh=COMMAND           specify the remote shell to use                   
     --rsync-path=PROGRAM    specify the rsync to run on the remote machine    
     --existing              skip creating new files on receiver               
     --ignore-existing       skip updating files that already exist on receiver
     --remove-source-files   sender removes synchronized files (non-dirs)      
     --del                   an alias for --delete-during                      
     --delete                delete extraneous files from destination dirs     
     --delete-before         receiver deletes before transfer, not during      
     --delete-during         receiver deletes during transfer (default)        
     --delete-delay          find deletions during, delete after               
     --delete-after          receiver deletes after transfer, not during       
     --delete-excluded       also delete excluded files from destination dirs
     --ignore-errors         delete even if there are I/O errors
     --force                 force deletion of directories even if not empty
     --max-delete=NUM        don't delete more than NUM files
     --max-size=SIZE         don't transfer any file larger than SIZE
     --min-size=SIZE         don't transfer any file smaller than SIZE
     --partial               keep partially transferred files
     --partial-dir=DIR       put a partially transferred file into DIR
     --delay-updates         put all updated files into place at transfer's end
 -m, --prune-empty-dirs      prune empty directory chains from the file-list
     --numeric-ids           don't map uid/gid values by user/group name
     --timeout=SECONDS       set I/O timeout in seconds
     --contimeout=SECONDS    set daemon connection timeout in seconds
 -I, --ignore-times          don't skip files that match in size and mod-time
     --size-only             skip files that match in size
     --modify-window=NUM     compare mod-times with reduced accuracy
 -T, --temp-dir=DIR          create temporary files in directory DIR
 -y, --fuzzy                 find similar file for basis if no dest file
     --compare-dest=DIR      also compare destination files relative to DIR
     --copy-dest=DIR         ... and include copies of unchanged files
     --link-dest=DIR         hardlink to files in DIR when unchanged
 -z, --compress              compress file data during the transfer
     --compress-level=NUM    explicitly set compression level
     --skip-compress=LIST    skip compressing files with a suffix in LIST
 -C, --cvs-exclude           auto-ignore files the same way CVS does
 -f, --filter=RULE           add a file-filtering RULE
 -F                          same as --filter='dir-merge /.rsync-filter'
                             repeated: --filter='- .rsync-filter'
     --exclude=PATTERN       exclude files matching PATTERN
     --exclude-from=FILE     read exclude patterns from FILE
     --include=PATTERN       don't exclude files matching PATTERN
     --include-from=FILE     read include patterns from FILE
     --files-from=FILE       read list of source-file names from FILE
 -0, --from0                 all *-from/filter files are delimited by 0s
 -s, --protect-args          no space-splitting; only wildcard special-chars
     --address=ADDRESS       bind address for outgoing socket to daemon
     --port=PORT             specify double-colon alternate port number
     --sockopts=OPTIONS      specify custom TCP options
     --blocking-io           use blocking I/O for the remote shell
     --stats                 give some file-transfer stats
 -8, --8-bit-output          leave high-bit chars unescaped in output
 -h, --human-readable        output numbers in a human-readable format
     --progress              show progress during transfer
 -P                          same as --partial --progress
 -i, --itemize-changes       output a change-summary for all updates
     --out-format=FORMAT     output updates using the specified FORMAT
     --log-file=FILE         log what we're doing to the specified FILE
     --log-file-format=FMT   log updates using the specified FMT
     --password-file=FILE    read daemon-access password from FILE
     --list-only             list the files instead of copying them
     --bwlimit=KBPS          limit I/O bandwidth; KBytes per second
     --write-batch=FILE      write a batched update to FILE
     --only-write-batch=FILE like --write-batch but w/o updating destination
     --read-batch=FILE       read a batched update from FILE
     --protocol=NUM          force an older protocol version to be used
     --iconv=CONVERT_SPEC    request charset conversion of filenames
 -4, --ipv4                  prefer IPv4
 -6, --ipv6                  prefer IPv6
     --version               print version number
(-h) --help                  show this help (-h works with no other options)

Use "rsync --daemon --help" to see the daemon-mode command-line options.
Please see the rsync(1) and rsyncd.conf(5) man pages for full documentation.
See http://rsync.samba.org/ for updates, bug reports, and answers
rsync error: syntax or usage error (code 1) at main.c(1490) [receiver=3.0.6]
Backup wird ausgehängt
kdialog: cannot connect to X server

Ich dachte dass es vieleicht mit dem "X server" zu tun hat weil ja vor kurzem das Update zu KDE-4.3.3 durchlief aber leider auch nach dem Neubau der Treiber immer noch der gleiche Fehler.

Oder ist doch etwas am "rsync Befehl" faul?

Quellcode

1
rsync -avutl --delete --exclude-from="$EXCLUDEFILE" $SOURCEDIR $DESTDIR


Was passt hier nicht zusammen?

Gruss Micha.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Michigen« (09.12.2009, 20:05)


2

02.12.2009, 22:54

der link zum backup skript funktioniert nicht !

somit kann ich auch schlecht rausfinden, was da wohl drin steht, in diesem skript
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

4

02.12.2009, 23:12

puhh

da werden insgesamt 5 dateien angeboten ...


du verwendest nur das im 1. beitrag erwähnte backup-script.sh.txt?
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

5

02.12.2009, 23:37

ich verwende das aus dem letzten Post:

Quellcode

1
Ich hab mich dafür entschlossen es im Script festzu halten und mein eigentliches Script heist jetzt nurnoch backup-script (siehe oben im Anhang, da sind auch die beiden Wrapper)

6

03.12.2009, 00:16

oke


und den rsync befehl kannst du mit den von dir angegebenen verzeichnisen ausführen?
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

7

03.12.2009, 00:36

;( nein geht leider nicht es kommt genau der gleiche Fehler.
Die datei "/root/backup/system-excluded" gibt es und SOURCEDIR="/" und DESTDIR="/backup/" gibt es auch.
in "system-excluded" steht:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
/media/*
/mnt/*
/proc/*
*Cache/*
*thumbnails/*
/tmp/*
/sys/*
/var/*
/dev/*
/home/*
/backup/*
*Trash*

Irgendwie habe ich hier einen Knoten im Kopf ?(

8

03.12.2009, 01:21

lass mal die excludes weg, und nimm zu rsync den schalter -n dazu (dry-run) .. das ist gut zum testen ..
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

9

03.12.2009, 10:05

Moin,

"rsync -avnutl --delete $SOURCEDIR $DESTDIR" ändert nichts es kommt wieder der selbe Fehler.
Dann kann es ja fast nur noch an "SOURCEDIR" oder "DESTDIR" liegen? ?(

10

03.12.2009, 13:20

na denn nimm doch die 2 variablen mal raus, und und schreib gültige verzeicnise rein ...
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

11

03.12.2009, 23:52

..ja wenn ich die Pfade ausschreibe dann läuft rsync durch. Aber warum funktionieren bei mir die Variablen nicht? Ich will ja unbedigt ein lauffähiges Skript und wenn schon dann sollen auch die Variablen klappen ;) .
Mir geht es da auch ein wenig ums ausprobieren und lernen.
Was mich auch wundert, das obwohl ich im Befehl

Quellcode

1
rsync -avutl --delete --exclude-from=/root/backup/system-excluded / /backup/sicherung
die exclude mit angebe wird doch home und alle anderen die in dieser exclude drinstehen mitgesynct?

Ich glaube da habe ich noch ein bisl Arbeit vor mir. :)

Gruss Micha.

12

07.12.2009, 03:06

Moin,

..leider werden meine per "--exclude" definierten Verzeichnisse und Dateien nicht ausgelassen egal ob als Variable oder direckte Pfadangabe. Ich habe die manpage auch schon hoch und runter gelesen komme da aber leider momentan nicht weiter. ;(

Gibt es beim definieren der Variablen noch etwas besonders zu beachten?

Wer kann mir da noch einen Tip geben?

Gruß Micha.

13

08.12.2009, 12:10

Wie rufst Du Dein Skriptchen denn auf? Das will entweder "system-backup" oder "home-backup" übergeben bekommen und prüft nicht, ob es gar nichts übergeben bekommen hat.

Grüße
Harald

14

08.12.2009, 14:24

Hey,

Zitat von »rubus«

Wie rufst Du Dein Skriptchen denn auf?

ganz Normal über # "sh backup-skript" Meinst Du auch der Fehler mit "--exclude" könnte da herrühren?

Gruß Micha.

15

08.12.2009, 15:37

Das Skript prüft nicht, ob da überhaupt was übergeben wurde, oder ob das, was übergeben wurde, Blödsinn ist. Das sollte man da aber auf jeden Fall noch mit aufnehmen, also die Variable "$1" abprüfen.

Also, was funktioniert, ist nur:
# <Pfad zum Skript>/backup-skript system-backup
oder
# <Pfad zum Skript>/backup-skript home-backup

Was nicht funktionieren kann, ist:
# <Pfad zum Skript>/backup-skript
und
# <Pfad zum Skript>/backup-skript irgendwas_nur_nicht_home-backup_oder_system-backup

Alles klar?

Harald

16

08.12.2009, 19:02

also ist das hier '== "system-backup"' nicht richtig und ich sollte statt der "==" mal den richtigen Pfad schreiben? Oder haben die "==" doch eine Bedeutung für das Skript?

17

08.12.2009, 19:29

Ich ahne, Du hast von Shell-Programmierung noch nicht den ganz großen Dunst ...
Also, der Kerl hat zwei Backupvarianten, einmal ab /, einmal ab /home. Je nach Lust und Laune macht er also quasi ein Full-Backup oder er sichert nur /home. Übergibt er seinem Skriptchen "system-backup", kommt Fall 1 dabei heraus, bei "home-backup" Fall 2. Das ist alles, was im Skript geprüft wird (siehe ==). Übergibt er nix oder was Falsches, geht das einfach in die Hose, genauso wie bei Dir. Daher sollte man eigentlich $1 im Skript zunächst einmal abprüfen, ob da nicht was anders als "system-backup" oder "home-backup" übergeben wurde und dann ggf. mit einer Meldung aussteigen.

Immer noch nicht klar?

18

08.12.2009, 19:50

Zitat von »rubus«

Ich ahne, Du hast von Shell-Programmierung noch nicht den ganz großen Dunst ...
schöner hätte ichs nicht sagen können.
..bisl Versteh ich und ein bisl mehr davon nicht.
Also wenn er "system-backup" übergibt wird das dann im Skript gemacht.
Hört sich jetzt sicher blöd an aber wie übergibt er das jetzt genau ? Cron ..?

Zitat

Daher sollte man eigentlich $1 im Skript zunächst einmal abprüfen, ob da nicht was anders als "system-backup" oder "home-backup" übergeben wurde und dann ggf. mit einer Meldung aussteigen.
da fehlts gerade noch ;(
Könntest da mal ein Beispiel in das Skript schreiben.

19

08.12.2009, 23:11

..jetzt habe ich es doch noch Verstanden was Du meintest. Peinlich :rolleyes: Bin da irgendwie mit "$1" durcheinandergekommen weil damit beides also sowohl "system-backup" und auch "home-backup" definiert ist.

Also er ruft das Skript mit dem was er machen will auf.
Na ja ich habe halt viel zu kompliziert gedacht. :|..

20

08.12.2009, 23:12

Guten Abend Michigen,

Zitat

wie übergibt er das jetzt genau ? Cron ..?

Nein, auf der Kommandozeile. Ich habe Dir die Beispiele doch schon geliefert.

Nimm zum Verstehen einfach mal folgendes Skriptlein. Kopiere den Kram in eine Datei mit dem Namen beispiel.sh und mache ein "chmod 755 beispiel.sh" darauf.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash

if [ -z "$1" ]; then
        echo -e "\nHier fehlt der Uebergabeparameter.\n"
        exit 1
fi

if  [ "$1" = "michigen" ] || [ "$1" = "Michigen" ] ; then
        echo -e "\nHallo Michigen!\n"
        exit 0
else
        echo -e "\nDer Uebergabeparameter ist Bloedsinn."
        echo -e "Es ist nur "Michigen" oder "michigen" erlaubt.\n"
        echo -e "Dein Aufruf lautete: $0 $1\n"
        exit 2
fi

Dann rufst Du es auf mehrere Arten auf und guckst, was dabei rauskommt. Danach verstehst Du auch das wirklich simpel gestrickte Backupskript. $1 ist der erste (und hier einzige) Stellungsparameter, den du übergibst, $0 das Kommando selbst.
1.) ohne Übergabeparameter, also einfach: # ./beispiel.sh
2.) mit Übergabeparameter "Michigen" oder "michigen", also: # ./beispiel.sh michigen oder # ./beispiel.sh Michigen
3.) mit einem anderen Übergabeparameter, also z.B.: # ./beispiel.sh blafasel

Ganz am Rande: Ich wundere mich, daß die test-Syntax mit den doppelten Gleichheitsszeichen korrekt funktioniert, tut sie aber offensichtlich. An sich reicht eines.

Viel Spaß beim Skripteln
Harald