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

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

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

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  [email protected]:/ xxxxx-server/

Ich habe diese Endzeilen 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 dem Ausführen eines rsync erhalte ich nur vollständige root& usr-Verzeichnisse. Es +werden keine anderen erwähnten Pfaddateien/Unterverzeichnisse heruntergeladen.

Ich möchte, +dass Verzeichnisse Includes und -Nicht-Includes sind.

Was mache ich falsch?

Antwort1

Die Syntax ist schwierig, aber nicht unmöglich, wenn Sie den Dreh erst einmal raus haben. Der Trick besteht darin, zu erkennen, dass Sie die passenden Verzeichnisse nacheinander relativ zur Stammverzeichniswurzel des Arbeitsverzeichnisses von rsync/rsnapshot auflisten müssen:

sagen Sie, 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 mit /var, dann mit /var/log, dann mit /var/* und dann mit /*.

Das würde nicht funktionieren

+ /var/log
- /*

weil /var/log seltsamerweise keine Übereinstimmung generiert …

In Ihrem Beispiel Ihre erste

+ /backups/mysqldb/latest

würde nie ein Match erstellen... aus demselben Grund!

Antwort2

Ihr Ausschlussmuster scheint /*zu bedeuten, dass alle Pfade wie /etc/somethingausgeschlossen werden, sofern Sie nicht explizit /etcdie unerwünschten Pfade einschließen und dann mit ausschließen /etc/*.

Addieren Sie also + /etcund - /etc/*, und ebenso für /varund /backupsund /backups/mysqldb.

Übrigens habe ich vorhin gesagt, dass Sie 2 Dateien benötigen, eine separate include_file und exclude_file. Sie können dies tun, aber wenn Sie jede Zeile in der Datei mit einem expliziten '+ ' oder '- ' beginnen, überschreibt dies dieStandardAspekte einschließen oder ausschließen. Sie können also alles in eine Datei packen, vorausgesetzt, Sie stellen den Zeilen das Präfix voran, wie Sie es getan haben.

verwandte Informationen