Как я могу исключить файлы по умолчанию с помощью rsync?

12

Как я могу исключить файлы по умолчанию с помощью rsync? Вот как начинается мой обычный синтаксис rsync:

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

Я часто упоминал о настройке /etc/rsyncd.confфайла, но, возможно, это больше для демона, чем для команды rsync.

Можно ли иметь некоторые исключения по умолчанию для rsync при вызове из командной строки, как в моем синтаксисе по умолчанию выше?

УХО
источник

Ответы:

10

Добавьте исключения в файл, затем используйте --exclude-from = / path / to / exclude_file

например

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

# rsync --exclude-from=rsync.excludes
frogstarr78
источник
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 в соответствии со своими предпочтениями.

scottatron
источник
0

--exclude "/ *" исключит все по умолчанию. Вот пример:

rsync -av --include "bin /" --exclude "/ *" / source_dir / / dest_dir /
Синьбин Дай
источник