Rsnapshot --exclude-from-Datei funktioniert nicht für Unterverzeichnisse

1935
Tuhin Bhuiyan

Ich mache ein Remote-Backup. Dies ist meine rsnapshot config.

config_version 1.2 snapshot_root /data/sbackup/ cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync cmd_ssh /usr/bin/ssh cmd_logger /usr/bin/logger interval alpha 2 interval beta 2 interval gamma 2 interval delta 1 ssh_args -p xxxx verbose 3 loglevel 4 logfile /var/log/rsnapshot/ exclude_file /data/xxxxx.exclude rsync_long_args --stats --delete --numeric-ids --relative --delete-excluded lockfile /var/run/rsnapshot.pid backup root@xx.xx.xx.xxx:/ xxxxx-server/ 

Ich habe diese unterste Zeile in exclude_file hinzugefügt

+ /root + /backups/mysqldb/latest + /etc/automysqlbackup + /etc/imscp + /etc/postfix + /etc/fail2ban + /etc/dovecot + /etc/apache2 + /etc/ssh + /etc/ssl + /etc/php5 + /etc/cron.d + /usr + /var/mail + /var/www + /var/log - /var/cache - /boot - /home - /opt - /etc - /* 

Aber nach einem rsync tut ich nur immer voll root& - usrVerzeichnis. Es werden keine anderen erwähnten +Pfaddateien / Unterverzeichnisse heruntergeladen.

Ich möchte, dass +Verzeichnisse einschließen und -nicht einschließen.

Was mache ich falsch ?.

1

2 Antworten auf die Frage

1
Joris

Die Syntax ist schwierig, aber nicht unmöglich, wenn Sie einmal den Dreh raus haben. Der Trick besteht darin, dass Sie die Verzeichnisse auflisten müssen, die relativ zum Stamm des Arbeitsverzeichnisses rsync / rsnapshot übereinstimmen müssen:

Angenommen, Sie möchten das Verzeichnis / var / log einschließen und sonst nichts

+ /var # we want the var directory + /var/log # we want the var/log directory - /var/* # we dont want anything else in the var directory - /* # we don't want anything else at all 

Ich hoffe, Sie sehen es, zuerst haben wir eine Übereinstimmung auf / var, dann auf / var / log, dann auf / var / * und dann auf / *.

Das würde nicht funktionieren

+ /var/log - /* 

weil / var / log seltsamerweise keine Übereinstimmung erzeugt ....

In deinem Beispiel deine erste

+ /backups/mysqldb/latest 

würde nie ein Match erstellen .. aus dem gleichen Grund!

Ich habe meine Entscheidung geändert und dies als endgültige Antwort besser erklärt. Tuhin Bhuiyan vor 8 Jahren 0
0
meuh

Anscheinend bedeutet Ihr Ausschlussmuster, /*dass Pfade wie /etc/somethingdiese ausgeschlossen werden, es sei denn, Sie schließen explizit /etcdiejenigen ein und schließen sie dann aus, die Sie nicht möchten /etc/*.

Fügen Sie also + /etcund - /etc/*und und ähnlich für /varund /backupsund hinzu /backups/mysqldb.

Übrigens, ich habe vorhin gesagt, dass Sie 2 Dateien benötigen, eine separate Include-Datei und eine Exclude-Datei. Sie können dies tun, aber wenn Sie jede Zeile in der Datei mit einem expliziten "+" oder "-" beginnen, wird der standardmäßige Einschluss- oder Ausschlussaspekt überschrieben . Sie können also alle Dateien in einer Datei speichern, vorausgesetzt, Sie geben die Zeilen so an, wie Sie es getan haben.

Danke für die Antwort. Ich habe diese Lösung ausprobiert, indem ich Dateien ein- und ausschließe, aber nicht funktioniere. Ich bekomme immer noch `/ root` &` / usr` dir. Tuhin Bhuiyan vor 8 Jahren 0
Ich habe eine wahrscheinliche Lösung hinzugefügt. meuh vor 8 Jahren 0
Sie sagen also, ich sollte "- / etc / apache2" hinzufügen, um es auszuschließen und nur "+ / etc" hinzuzufügen, um alles andere aus "/ etc" zu kopieren. Ist das nicht etwas, was ich vorher in einer Datei oben gemacht habe? Tuhin Bhuiyan vor 8 Jahren 0
Nein. Sie sagen, Sie möchten `/ etc / apache2` einschließen, so dass es ein '+' hat. Behalte diesen Eintrag Ich sage "- / etc / *" (das ist ein Muster), um andere Verzeichnisse in "/ etc" auszuschließen, die Sie nicht explizit in der Liste erwähnt haben. Sie müssen das `- / etc` entfernen, das mir nicht aufgefallen ist. meuh vor 8 Jahren 0
Vielen Dank :) . Ich habe versucht, "- / etc / *" hinzuzufügen, um alle anderen auszuschließen, mit Ausnahme derjenigen, die ich mit "+ / etc / something" haben möchte, und indem "- / etc / *" entfernt wird. Dies hat jedoch nicht geklappt. Was es funktioniert hat ist, wenn ich auch `+ / etc` explizit hinzufüge, dann fing es an zu arbeiten. Es sieht also so aus, als müsste ich `+ / etc` &` - / etc / * `zusammen mit` + / etc / something` hinzufügen, um alle Unterverzeichnisse in `/ etc`-Verzeichnis aufzunehmen. Vielen Dank für Ihre Lösung. Ich werde es als akzeptierte Antwort markieren, da diese Idee mich dazu bringt, die Datei richtig zu konfigurieren. :) Tuhin Bhuiyan vor 8 Jahren 0