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/something
ausgeschlossen werden, sofern Sie nicht explizit /etc
die unerwünschten Pfade einschließen und dann mit ausschließen /etc/*
.
Addieren Sie also + /etc
und - /etc/*
, und ebenso für /var
und /backups
und /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.