如何使用 rsync 默认排除文件?

如何使用 rsync 默认排除文件?

如何使用 rsync 默认排除文件?以下是我的正常 rsync 语法的开始方式:

rsync --exclude ".ht*" --exclude "error_log" --exclude ".DS*" --exclude "old" ...

我已经看到很多关于配置/etc/rsyncd.conf文件的提及,但也许这更多的是针对守护进程而不是 rsync 命令。

当从命令行调用时,是否可以像上面的默认语法一样对 rsync 进行一些默认排除?

答案1

将排除添加到文件中,然后使用 --exclude-from=/path/to/exclude_file

例如

# cat rsync.excludes
.ht*
error_log
.DS*
old
...

# rsync --exclude-from=rsync.excludes

答案2

否,rsync没有在调用时读取的默认配置文件。你能做的最好的事情就是@frogstarr78所说的,创建一个文本文件,其中包含要排除的模式、文件和目录名称,然后rsync--exclude-from=filename.

答案3

虽然 rsync 不允许您设置默认选项,但您可以创建一个包装脚本并将其放在 $PATH 中比 rsync 二进制文件更高的位置。

这是我的 rsync 包装器,位于~/bin/rsync

#!/bin/sh

# Set path to the rsync binary
RSYNC=/usr/bin/rsync

# Look for these exclude files
IGNORE_FILES=(~/.rsyncignore ./.gitignore ./.rsyncignore)

EXCLUDE_FROM=""
for f in ${IGNORE_FILES[@]}; do
  if [[ -e $f ]]; then
    EXCLUDE_FROM="$EXCLUDE_FROM --exclude-from=$f "
  fi
done
$RSYNC $EXCLUDE_FROM "$@"

它将查找~/.rsyncignore, ./.gitignore,./.rsyncignore文件,如果其中任何一个存在,则将它们用作默认--exclude-from参数。

只需更改 RSYNC 和 IGNORE_FILES 即可适合您的环境和偏好。

答案4

--exclude "/*" 默认情况下会排除所有内容。这是一个例子:

rsync -av --包括“bin/”--排除“/*”/source_dir//dest_dir/

相关内容