web-dev-qa-db-ja.com

rsync--除外しないことを除外しない

次のスクリプトを使用してUbuntu12.04 LTSサーバーでrsyncを使用して、すべての/をバックアップしていますが、スクリプトを(rootとして)実行すると、ディレクトリ/backup含まれる、それが除外されるべき

#!/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

なぜこれが起こっているのですか、そしてどうすればrsyncに/backupを無視させることができますか?

2
Xenon

スクリプトで#!/bin/sh#!/bin/bashに変更すると、この問題が修正されました。スクリプトで使用されている中括弧の拡張はbash機能であるため、shでは使用できません。

4
Xenon

rsync(1)のマンページから:


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

/backup/*を指定すると、ディレクトリ内のすべてのfilesが除外されますが、ディレクトリ自体は除外されません。ディレクトリを除外するには、/backupを使用します

例:


$ 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

0
dawud