rsync over SSH备份脚本exclude规则不生效,无法定位问题原因
问题根因
rsync 的 --exclude 路径规则是相对于同步源根目录匹配的,你当前设置的同步源为 /home/viktor,你写的绝对路径格式排除规则会被rsync判定为匹配源目录下的 home/viktor/xxx 路径,该路径实际不存在,所以排除规则不生效。
修复方案
- 调整排除规则的路径写法,去掉
/home/viktor/前缀,直接以/开头代表同步源的根目录即可 - 你当前脚本生成的三个存储目录文件列表没有实际使用,如果要排除这三个目录的内容,可以直接添加对应排除规则,或者通过
--exclude-from参数加载你生成的列表文件 - 可添加
--dry-run参数先做模拟同步,验证排除规则生效后再执行正式同步,避免误操作
修改后的参考脚本
#!/usr/bin/bash ## This is my backup script # 如果你生成的三个列表文件有其他用途可保留,否则无需生成,直接加排除规则即可 # ls /storage/Music > /home/viktor/Music-storage.list # ls /storage/Videos > /home/viktor/Videos-storage.list # ls /storage/Downloads > /home/viktor/Downloads-storage.list rsync --verbose --archive --compress --delete \ --exclude="/.local/share/Trash/*" \ --exclude="/.local/share/baloo/index" \ --exclude="/.var/com.valvesoftware.Steam/*" \ --exclude="/.var/app/com.usebottles.bottles/data/bottles/bottles/GamingBottle/*" \ --exclude="/Music/*" \ --exclude="/Videos/*" \ --exclude="/Downloads/*" \ --log-file="/home/viktor/backupsync.log" \ --rsh='sudo ssh -i (omitted but ssh works)' \ /home/viktor/ viktor@192.168.1.35:/mnt/md/backuparray echo 'syncing is klaar!'
注:源目录末尾加了
/,是为了明确同步/home/viktor目录下的内容,而不是把viktor目录本身同步到目标路径下,你可以根据自己的同步需求决定是否保留。
内容的提问来源于stack exchange,提问作者Viktor De Clippel
相关产品推荐
相关产品推荐

