我正在做遠端備份。這是我的 rsnapshot 配置。
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/
我已在排除文件中添加了此底線
+ /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
- /*
但執行 rsync 後,我只得到完整的root
目錄usr
。沒有其他提到的+
路徑檔案/子目錄被下載。
我希望+
目錄被包含和-
不被包含。
我做錯了什麼?
答案1
語法很困難,但一旦掌握了竅門也並非不可能,訣竅是要意識到必須列出相對於 rsync/rsnapshot 工作目錄的根目錄一一匹配的目錄:
假設您想要包含 /var/log 目錄,而不包含其他內容
+ /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
希望您能看到,首先我們在 /var 上有匹配,然後在 /var/log 上,然後在 /var/* 上,然後在 /* 上。
這是行不通的
+ /var/log
- /*
因為 /var/log 不會產生匹配項,奇怪的是......
在你的例子中你的第一個
+ /backups/mysqldb/latest
永遠不會創建匹配..出於同樣的原因!
答案2
看來您的排除模式/*
意味著任何類似的路徑/etc/something
都將被排除,除非您明確包含/etc
然後排除您不想要的路徑/etc/*
。
因此添加+ /etc
和- /etc/*
,並且類似地添加/var
和/backups
。/backups/mysqldb
順便說一句,我之前說過你需要 2 個文件,一個單獨的 include_file 和 excex_file。您可以這樣做,但事實上,如果您以顯式的“+”或“-”開頭檔案中的每一行,它會覆蓋預設包含或排除方面。因此,您可以將所有內容放入一個文件中,前提是您為這些行添加了前綴。