rsync --exclude 不排除

rsync --exclude 不排除

我在 Ubuntu 12.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

答案1

在脚本中更改#!/bin/sh为已修复此问题。脚本中使用的花括号扩展是一项功能,因此在 中不可用。#!/bin/bashbashsh

答案2

来自rsync(1)手册页:


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

当你指定时/backup/*,你将排除所有文件目录内,但不是目录本身。要排除目录,请使用/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

相关内容