本地rsync包含/排除

人气:61 发布:2023-01-03 标签: rsync

问题描述

我似乎无法正确使用命令来备份/etc/php5、/etc/apache2和/etc/mysql。我用了两个,因为我想不出怎么把两个都放在一个里。第一个有效:

rsync -vahtl --dry-run --log-file=$LOGFILE --exclude="wp-includes/" --exclude="wp-admin/" --exclude="wp-*.php" /var/www $DROPBOX_FOLDER

但当我运行第二个指令时,我尝试了一系列--INCLUDE和--EXCLUDE指令变体,但都不起作用:

rsync -vahtl --dry-run --log-file=$LOGFILE --include="php5" --exclude="*" /etc $DROPBOX_FOLDER
rsync -vahtl --dry-run --log-file=$LOGFILE --include="*/" --include="php5/" --exclude="*" /etc $DROPBOX_FOLDER

等.

推荐答案

最快的方法是使用如下代码将其作为bash脚本运行。需要根据您的linux风格进行调整

#!/bin/sh
# rsync backup script
rsync -avz --delete-excluded --exclude-from=backup.lst / /home/USERNAME/Dropbox/backup
然后在要从中运行该脚本的目录中创建一个名为backup.lst的文件 #包含 +/ETC/php5 +/ETC/apache2 +/ETC/MYSQL +/var/www

# Exclude
- /var/www/wp-admin/*
- /var/www/wp-*.php
- /var/www/wp-includes/*
- /etc/*
- /run/*
- /proc/*
- /sys/*
- /tmp/*
- lost+found/
- /media/*
- /mnt/*

以下是一些排除/包含示例:

# --exclude "*.o"   would exclude all filenames matching *.o
# --exclude "/foo"  would exclude a file in the base directory called foo
# --exclude "foo/"  would exclude any directory called foo.
# --exclude "/foo/*/bar"  would exclude any file called bar two levels below a
                      base directory called foo.
# --exclude "/foo/**/bar" would exclude any file called bar two or more levels below
                      a base directory called foo.
# --include "*/" --include "*.c" --exclude "*"
                      would include all directories
                      and C source files
# --include "foo/" --include "foo/bar.c" --exclude "*"
                would include only foo/bar.c (the foo/ directory must be
                explicitly included or it would be excluded by the "*")

14