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?

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

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.


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.


0

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

rsync -av --include "bin /" --exclude "/ *" / source_dir / / dest_dir /
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.