rsync - exclua não excluindo

2

Estou usando o rsync em um servidor LTS do Ubuntu 12.04 com o seguinte script para fazer o backup de todo o / , no entanto, sempre que executo o script (como root), o diretório /backup é incluído , quando deve ser excluído :

#!/bin/sh
rsync --password-file=/etc/rsyncd.password --delete -aAXzv --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/home/*/.gvfs,/home/*/Downloads/*,/backup/*,/var/spool/squid3,/opt/atlassian,var/www/\~*} /* fsbak@servername::fsbak

Por que isso está acontecendo e como posso fazer o rsync ignorar /backup ?

    
por Xenon 12.04.2013 / 18:22

2 respostas

3

A alteração de #!/bin/sh para #!/bin/bash no script corrigiu esse problema. A expansão de chaves usadas no script é um recurso bash e, como tal, não está disponível em sh .

    
por 13.04.2013 / 03:07
0

Na% man_de% manpage:


      --exclude=PATTERN       exclude **files** matching PATTERN

Quando você especifica rsync(1) , está excluindo todos os arquivos dentro do diretório, mas não o próprio diretório. Para excluir o diretório, use /backup/*

Exemplo:


$ tree test
test
├── a
│   ├── 1
│   ├── 2
│   ├── 3
│   └── 4
└── b

$ rsync -av --exclude=4 $PWD/test/a/ $PWD/test/b/
sending incremental file list
./
1/
2/
3/

sent 87 bytes  received 27 bytes  228.00 bytes/sec
total size is 0  speedup is 0.00

$ tree test
test
├── a
│   ├── 1
│   ├── 2
│   ├── 3
│   └── 4
└── b
    ├── 1
    ├── 2
    └── 3

9 directories, 0 files

    
por 12.04.2013 / 19:08