如何指定在 grsync/rsync 中包含/排除的特定文件?
目前,我使用不同的操作来仅备份指定文件夹中的文件。我现在想一次性完成。我想我应该看看包含/排除选项?
假设我有一个像这样的文件夹结构
/
/inc1
/inc1.1
/...
/inc2
/...
/exc1
files in root here ...
我只想备份 inc1 和 inc2 中的文件/文件夹,我该怎么做?
答案1
您可以使用 --include 和 --exclude 选项,或者对于备份过程,您可能需要使用 --include-from,以便您可以在文件中列出要备份的文件夹。
例如,你的文件可能名为 includes.txt 并保存在你的主目录中。它将包含
inc1/
inc2/
用于备份主目录中的文件夹 inc1 和 inc2 的 rsync 命令如下
rsync $HOME --include-from=~/includes.txt /home/backup/
rsync 非常灵活,您最好先查阅手册页,如果遇到困难,可以询问更具体的问题。
答案2
要仅包含特定目录,请包含它们及其内容,然后排除*
。 如果目录不在根目录,则需要包含指向它们的每个目录。 例如,要仅包含/source/inc1
、/source/inc2
和/source/also/included
:
rsync -a --include='/inc1/***' --include='/inc2/***' \
--include='/also' --include='/also/included/***' \
--exclude='*' /source /target
也可以看看常见 rsync 过滤器的快速指南。
答案3
也许我遗漏了一些东西,但您只需将这些文件夹指定给 rsync:
rsync -Pav /inc1 /inc2 /path/to/backup/folder/
这将创建:
/path/to/backup/folder/inc1/
/path/to/backup/folder/inc1/inc1.1/
/path/to/backup/folder/inc1/...
/path/to/backup/folder/inc2/
/path/to/backup/folder/inc2/...