Comment puis-je exclure des fichiers par défaut avec rsync?

12

Comment puis-je exclure des fichiers par défaut avec rsync? Voici comment commence ma syntaxe rsync normale:

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

J'ai beaucoup parlé de la configuration du /etc/rsyncd.conffichier, mais c'est peut-être plus pour le démon que pour la commande rsync.

Est-il possible d'avoir des exclusions par défaut pour rsync lorsqu'il est appelé à partir de la ligne de commande comme dans ma syntaxe par défaut ci-dessus?

cwd
la source

Réponses:

10

Ajoutez vos exclusions à un fichier, puis utilisez --exclude-from = / path / to / exclude_file

par exemple

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

# rsync --exclude-from=rsync.excludes
frogstarr78
la source
1
ressemble à la syntaxe --exclude-fromet non, --exclude-filemais sinon cela semble être le ticket. Merci!
cwd
5

Non, rsyncn'a pas de fichier de configuration par défaut qu'il lira lors de l'appel. Le mieux que vous puissiez faire est ce que dit @ frogstarr78 et créez un fichier texte avec des modèles, des noms de fichiers et de répertoires à exclure, puis pointez rsyncdessus avec --exclude-from=filename.

Kusalananda
la source
2
rsync does not have a default configuration file- c'est décevant
cwd
3

Bien que rsync ne vous permette pas de définir les options par défaut, vous pouvez créer un script wrapper et le placer plus haut dans votre $ PATH que le binaire rsync.

Ceci est mon wrapper rsync qui vit dans ~/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 "$@"

Il va chercher ~/.rsyncignore, ./.gitignore, les ./.rsyncignorefichiers et, si l' un d'eux existe, les utiliser par défaut des --exclude-fromarguments.

Modifiez simplement le RSYNC et IGNORE_FILES en fonction de votre environnement et de vos préférences.

scottatron
la source
0

--exclude "/ *" exclura tout par défaut. Voici un exemple:

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