Rsnapshot --exclude-from 파일이 하위 디렉터리에 대해 작동하지 않습니다.

Rsnapshot --exclude-from 파일이 하위 디렉터리에 대해 작동하지 않습니다.

원격 백업을 하고 있습니다. 이것은 내 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/

include_file에 이 결론을 추가했습니다.

+ /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
- /*

root그러나 rsync를 수행한 후에는 전체 및 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/*

따라서 and 및 에도 마찬가지로 + /etcand 를 추가하세요 .- /etc/*/var/backups/backups/mysqldb

그건 그렇고, 앞서 별도의 include_file과 include_file이라는 2개의 파일이 필요하다고 말씀드렸습니다. 이렇게 할 수 있지만 실제로 파일의 각 줄을 명시적인 '+' 또는 '-'로 시작하면기본측면을 포함하거나 제외합니다. 따라서 행한 대로 행의 접두어를 지정하면 하나의 파일에 모두 넣을 수 있습니다.

관련 정보