如何使用 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/