默认情况下,如何使用rsync排除文件?


12

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

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

我已经看到了很多有关配置/etc/rsyncd.conf文件的信息,但是对于守护程序而言,这可能比rsync命令更多。

从命令行调用时,是否有一些默认的rsync排除项,就像上面我的默认语法一样?

Answers:


10

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

例如

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

# rsync --exclude-from=rsync.excludes

1
看起来像语法--exclude-from,不是--exclude-file,否则看起来像是票。谢谢!
cwd

5

否,rsync没有调用时将读取的默认配置文件。您能做的最好的事情就是@ frogstarr78所说的内容,并创建一个包含要排除的模式,文件和目录名称的文本文件,然后使用指向rsync--exclude-from=filename


2
rsync does not have a default configuration file-令人失望
cwd

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以适合您的环境和偏好即可。


0

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

rsync -av --include“ bin /”-排除“ / *” / source_dir / / dest_dir /
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.