web-dev-qa-db-ja.com

rsyncでデフォルトでファイルを除外するにはどうすればよいですか?

Rsyncでデフォルトでファイルを除外するにはどうすればよいですか?これが私の通常のrsync構文の始まりです:

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

/etc/rsyncd.confファイルの構成について多くの言及を見てきましたが、おそらくそれはrsyncコマンドよりもデーモンの方が重要です。

上記のデフォルトの構文のように、コマンドラインから呼び出されたときにrsyncのデフォルトの除外を設定することは可能ですか?

12
cwd

除外をファイルに追加してから、-exclude-from =/path/to/exclude_fileを使用します

例えば.

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

# rsync --exclude-from=rsync.excludes
10
frogstarr78

いいえ、rsyncには、呼び出し時に読み取るデフォルトの構成ファイルがありません。最善の方法は、@ frogstarr78が言うことを実行し、除外するパターン、ファイル、およびディレクトリ名を含むテキストファイルを作成してから、rsync--exclude-from=filenameでポイントすることです。

5
Kusalananda

Rsyncではデフォルトのオプションを設定できませんが、ラッパースクリプトを作成して、rsyncバイナリよりも$ PATHの上位に配置することができます。

これは~/bin/rsyncにある私の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を変更するだけです。

3
scottatron

--exclude "/ *"は、デフォルトですべてを除外します。次に例を示します。

 rsync -av --include "bin /" --exclude "/ *"/source_dir// dest_dir /
0
Xinbin Dai