Flexbackup Prune funktioniert nicht

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Flexbackup Prune funktioniert nicht

Beitrag von rksteve » 16.05.2016 20:30:44

Hallo,

Ich verwende flexbackup schon recht lange. Nach dem Umzug auf einen neuen Rechner funktioniert prune allerdings nicht mehr.
Folgenedes habe ich in /etc/flexbackup.conf

Code: Alles auswählen

$type = 'tar';
$set{'home'}   = "/home";
$prune{'/home'} = "steve/digi steve/X-Plane*" ;
und damit sollten die verzeichnisse
/home/steve/digi und /home/steve/X-Plane 10/ nicht archiviert werden. Das mit digi hatte ich früher auch schon, da hat es funktioniert, für X-Plane 10 (mit Leerzeichen) habe ich noch keine Möglichkeit gefunden.

Was muss ich ändern damit diese beiden Verzeichnisse wieder ausgelassen werden?
Ich? Nein, ich bin keine Signatur, ich mach hier nur sauber...

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Flexbackup Prune funktioniert nicht

Beitrag von rendegast » 16.05.2016 21:21:29

Das Ding ist Teil eines find-Regex,
/usr/bin/flexbackup:

Code: Alles auswählen

    if (defined(%{$::prune{$prunekey}})) {
        # FreeBSD needs -E (above) and no backslashes around the (|) chars
        if ($::uname =~ /FreeBSD/) {
            $cmd .= '-regex "\./(';
            $cmd .= join('|', keys %{$::prune{$prunekey}});
            $cmd .= ')/.*" ';
        } else {
            $cmd .= '-regex "\./\(';
            $cmd .= join('\|', keys %{$::prune{$prunekey}});
            $cmd .= '\)/.*" ';
        }
        $cmd .= '-prune -o ';
    } else {
...
Bildlich sowas

Code: Alles auswählen

find -regex "\./\(bin/AA\|bin/BB\|bin/CC\)/.*" -prune -o -print | sort
$prune{'/home'} = "steve/digi steve/X-Plane*"
Würde suchen nach resp. unterbinden "steve/X-Plan" mit beliebig vielen "e" dahinter.
Also eher ->

Code: Alles auswählen

$prune{'/home'} = "steve/digi steve/X-Plane.*"
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Re: Flexbackup Prune funktioniert nicht

Beitrag von rksteve » 17.05.2016 19:26:07

Danke für den Tipp.

Ich habe es in der Konfig angepaßt, da sieht es jetzt so aus

Code: Alles auswählen

$set{'home'}   = "/home";
$prune{'/home'} = "steve/digi steve/X-Plane.*" ;
Als Ergebnis sehe ich

Code: Alles auswählen

$ sudo flexbackup -set home -level 0

flexbackup version 1.2.1 (http://flexbackup.sourceforge.net)
/etc/flexbackup.conf syntax OK

|------------------------------------------------------------
| Checking 'buffer' on this machine... Ok
| Checking /bin/sh on this machine... unknown
|------------------------------------------------------------
| Doing level 0 backup of set home using tar
| Found directory index key 201410171241
| Backup set "home" (/home)
|------------------------------------------------------------
| Backup of: /home
| Date of this level 0 backup: Tue May 17 19:18:53 2016
| Date of last level 0 backup: the epoch
|------------------------------------------------------------
| cd "/home" && /tmp/flexbackup.2947.laptop/collectexit.2947.sh find . \
|   -regex "\./\(steve/digi\|steve/X-Plane.*\)/.*" -prune -o -xdev ! -type \
|   s ! -regex ".*/[Cc]ache/.*" ! -regex ".*~"$ ! -regex ".*\/cache4/.*" ! \
|   -regex ".*\/.thumbnails/.*" ! -regex ".*\/SPAM/.*" ! -regex \
|   ".*\/video/.*" ! -regex ".*iso" ! -regex ".*\/Recycled" ! -regex \
|   ".*\/[Tt]rash/.*" -print0 | \
|   /tmp/flexbackup.2947.schenlap/collectexit.2947.sh tar --create --null \
|   --files-from=- --ignore-failed-read --same-permissions --no-recursion \
|   --totals --label "level 0 /home Tue May 17 19:18:53 2016 tar+gzip from \
|   schenlap" --verbose --sparse -b 20 --file - | \
|   /tmp/flexbackup.2947.laptop/collectexit.2947.sh gzip -4 | \
|   /tmp/flexbackup.2947.laptop/collectexit.2947.sh buffer -m 10m -p 75 \
|   -s 10k -t -o "/media/nas/backup/home.0.201605171918.tar.gz"
| [ ! -e /tmp/flexbackup.2947.laptop/exitstatus.2947 ]
|------------------------------------------------------------
find: warning: you have specified the -xdev option after a non-option argument -regex, but options are not positional (-xdev affects tests specified before it as well as those specified after it).  Please specify options before other arguments.

level 0 /home Tue May 17 19:18:53 2016 tar+gzip from laptop
./
./steve/
<SNIP>
./steve/X-Plane 10 Demo/
Es funktioniert leider auch nicht.

Steve
Ich? Nein, ich bin keine Signatur, ich mach hier nur sauber...

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Re: Flexbackup Prune funktioniert nicht

Beitrag von rksteve » 17.05.2016 19:44:15

So, jetzt habe ich auch noch direkt Versuche mit find gemacht

Code: Alles auswählen

$ find . -regex "\./\(steve/digi\)/" -prune -o -print | grep steve/digi
zeigt mir steve/digi an, obwohl es das nicht sollte

Code: Alles auswählen

$ find . -regex "\./\(steve/digi\)/" -prune -print | grep steve/digi
Würde funktionieren ist aber wohl was anderes.

Steve
Ich? Nein, ich bin keine Signatur, ich mach hier nur sauber...

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Flexbackup Prune funktioniert nicht

Beitrag von rendegast » 17.05.2016 23:57:15

$ find . -regex "\./\(steve/digi\)/" -prune -o -print | grep steve/digi
zeigt mir steve/digi an, obwohl es das nicht sollte
Es zeigt Dir an
./.../steve/digi
nicht aber
./.../steve/digi/..., diese werden unterdrückt.
Problem, würde es einem 'tar' übergeben, wird das Verzeichnis wohl dennoch archiviert.

find . \
| -regex "\./\(steve/digi\|steve/X-Plane.*\)/.*" -prune -o -xdev ! -type \
| s ! -regex ".*/[Cc]ache/.*" ! -regex ".*~"$ ! -regex ".*\/cache4/.*" ! \
| -regex ".*\/.thumbnails/.*" ! -regex ".*\/SPAM/.*" ! -regex \
| ".*\/video/.*" ! -regex ".*iso" ! -regex ".*\/Recycled" ! -regex \
| ".*\/rash/.*" -print0


find: warning: you have specified the -xdev option after a non-option argument -regex, but options are not positional (-xdev affects tests specified before it as well as those specified after it). Please specify options before other arguments.
Die unteren regex haben unnötigerweise backslashed Slashes ("...\/..."),
ob das aber fehlerauslösend ist?

cache4
.thumbnails
SPAM
video
iso
Recycled
rash
hast wohl Du gesetzt, per $exclude_expr[#].

[quote=" flexbackup.conf (default) "]
$exclude_expr[0] = '.*/[Cc]ache/.*';
$exclude_expr[1] = '.*~$';
[/quote] Der erste entspricht dem Regex im 'find'-Aufruf,
der zweite scheinbar nicht?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Re: Flexbackup Prune funktioniert nicht

Beitrag von rksteve » 18.05.2016 07:25:28

Hallo,,
Du hast natürlich recht mit
cache4
.thumbnails
SPAM
video
iso
Recycled
rash
hast wohl Du gesetzt, per $exclude_expr[#].
Ich habe gestern noch auf die Default Config umgestellt und nur ein set und 1 Prune. Damit sind auch nur mehr 2 Einträge in exclude_expr drinnen. Aber auch das hat mein Problem nicht behoben. Ich werde heute Abend noch versuchen das Set anzupassen dass es direkt auf /home/steve zeigt und dann im Prune keine übergeordneten Verzeichnisse mehr aufscheinen.

@rendegast
Hast du flexbackup bei dir in Verwendung und Prune funktiobiert so wie es soll?

Steve
Ich? Nein, ich bin keine Signatur, ich mach hier nur sauber...

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Flexbackup Prune funktioniert nicht

Beitrag von rendegast » 18.05.2016 17:58:00

Bei mir gibt es auch die Warnung, aber das tar.gz wird ohne die Dateien aus den durch prune ausgeschlossenenen Verzeichnissen erstellt:
...
| Backup of: /_flex
| Date of this level 0 backup: Wed May 18 17:50:26 2016
| Date of last level 0 backup: the epoch
|------------------------------------------------------------
| cd "/_flex" && /tmp/flexbackup.23943.debianhost/collectexit.23943.sh find \
| . -regex "\./\(test/bin/CC\|test/bin/AA.*\)/.*" -prune -o -xdev ! -type \
| s ! -regex ".*/[Cc]ache/.*" ! -regex ".*~"$ -print0 | \
| /tmp/flexbackup.23943.debianhost/collectexit.23943.sh tar --create \
| --null --files-from=- --ignore-failed-read --same-permissions \
| --no-recursion --totals --label "level 0 /_flex Wed May 18 17:50:26 \
| 2016 tar+gzip from debianhost" --verbose --sparse -b 20 --file - | \
| /tmp/flexbackup.23943.debianhost/collectexit.23943.sh gzip -4 | \
| /tmp/flexbackup.23943.debianhost/collectexit.23943.sh dd ibs=10k obs=10k \
| conv=noerror of="/tmp/_flexb/_flex.0.201605181750.tar.gz"
| [ ! -e /tmp/flexbackup.23943.debianhost/exitstatus.23943 ]
|------------------------------------------------------------
level 0 /_flex Wed May 18 17:50:26 2016 tar+gzip from debianhost
find: warning: you have specified the -xdev option after a non-option argument -regex, but options are not positional (-xdev affects tests specified before it as well as those specified after it). Please specify options before other arguments.

./
./flexbackup_1.2.1-6.3_all.deb
./flexbackup_1.2.1-6.2_all.deb
./test/
./test/bin/
./test/bin/AA aa/
./test/bin/DD/
./test/bin/DD/1
./test/bin/DD/3
./test/bin/DD/4
./test/bin/DD/5
./test/bin/DD/6
./test/bin/DD/2
./test/bin/DD/7
./test/bin/EE/
./test/bin/EE/1
./test/bin/EE/3
./test/bin/EE/4
./test/bin/EE/5
./test/bin/EE/6
./test/bin/EE/2
./test/bin/EE/7
./test/bin/BB/
./test/bin/BB/1
./test/bin/BB/3
./test/bin/BB/4
./test/bin/BB/5
./test/bin/BB/6
./test/bin/BB/2
./test/bin/BB/7
./test/bin/CC/
....
Dabei muß

Code: Alles auswählen

$set{'flex'} = "/_flex";
$prune{'/_flex'} = "test/bin/AA.* test/bin/CC";
$device = '/tmp/_flexb';
bei prune der Pfad stehen (oder entsprechender Regex-Ausdruck),

Code: Alles auswählen

$prune{'/_flex'} = "bin/AA.* bin/CC";
funktioniert NICHT.



Insoweit ist Dein
level 0 /home Tue May 17 19:18:53 2016 tar+gzip from laptop
./
./steve/
<SNIP>
./steve/X-Plane 10 Demo/
also korrekt, soweit nicht noch
./steve/X-Plane 10 Demo/...
./steve/X-Plane 10 Demo/...
...
auftauchen.
Zuletzt geändert von rendegast am 09.10.2016 15:12:03, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Re: Flexbackup Prune funktioniert nicht

Beitrag von rksteve » 18.05.2016 20:09:04

Ja, es tauchen auch noch die ganzen Dateien von steve/X-Plane 10 Demo/ auf -> also nicht korrekt
Ich? Nein, ich bin keine Signatur, ich mach hier nur sauber...

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Flexbackup Prune funktioniert nicht

Beitrag von rendegast » 19.05.2016 11:18:54

Klappt auch mit der Version 1.2.1-6.3 / stretch
# zcat flex.latest.gz
...
| Backup set "flex" (/_flex)
|------------------------------------------------------------
| Backup of: /_flex
| Date of this level 0 backup: Thu May 19 11:02:15 2016
| Date of last level 0 backup: the epoch
|------------------------------------------------------------
| cd "/_flex" && /tmp/flexbackup.31844.debianhost/collectexit.31844.sh find \
| . -regex "\./\(test/bin/CC\|test/NO.*\|test/bin/AA.*\)/.*" -prune -o \
| -xdev ! -type s ! -regex ".*/[Cc]ache/.*" ! -regex ".*~"$ -print0 | \
...
|------------------------------------------------------------
level 0 /_flex Thu May 19 11:02:15 2016 tar+gzip from debianhost
find: warning: you have specified the -xdev option after a non-option argument -regex, but options are not positional (-xdev affects tests specified before it as well as those specified after it). Please specify options before other arguments.

./
./flexbackup_1.2.1-6.3_all.deb
./flexbackup_1.2.1-6.2_all.deb
./test/
./test/bin/
./test/bin/AA aa/
./test/bin/AA aa nn/

./test/bin/BB/
./test/bin/BB/1
./test/bin/BB/3
./test/bin/BB/4
./test/bin/BB/5
./test/bin/BB/2
./test/bin/CC/
./test/NO NO/

Total bytes written: 163840 (160KiB, 24MiB/s)
11+7 records in
...
(

Code: Alles auswählen

/flex/test/NO    NO/
ist ein Verzeichnisname mit mehreren Leerzeichen,
obiges QUOTE läßt davon nur eines übrig)
Einzige Änderung dabei gegenüber der Standard-Conf:

Code: Alles auswählen

$set{'flex'} = "/_flex";
$prune{'/_flex'} = "test/bin/AA.* test/bin/CC test/NO.*";
$device = '/tmp/_flexb';
Ist das Verzeichnis /home/steve/X-Plane 10 Demo/ vielleicht irgendwie besonders?
Ein (loop-)Mount, bind-Mount vielleicht?
(Das '-xdev' soll das wohl generell unterbinden, aber wer weiß?
Ich kann den verwendeten find-Ausdruck beileibe nicht bewerten, mir zu komplex.)
Zuletzt geändert von rendegast am 09.10.2016 15:12:43, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Re: Flexbackup Prune funktioniert nicht

Beitrag von rksteve » 19.05.2016 19:00:13

Nein, ist ein normales Verzeichnis

Ich habe mich jetzt etwas gespielt. Der find Befehl (ohne flexbackup.sh) funktioniert korrekt. Warum es nicht funktioniert wenn es flexbackup aufruft weiß ich nicht.
Ich lass es jetzt aber auch sein, ich finde den Fehler nicht. Ev. mach ich morgen noch den gleichen Versuch wie du...

Habe mir mal rsnapshot angeschaut, vielleicht verwende ich das.
Danke für dein Bemühen.
Ich? Nein, ich bin keine Signatur, ich mach hier nur sauber...

Antworten