Come posso escludere i file per impostazione predefinita con rsync?


12

Come posso escludere i file per impostazione predefinita con rsync? Ecco come inizia la mia normale sintassi rsync:

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

Ho visto molte menzioni sulla configurazione del /etc/rsyncd.conffile, ma forse è più per il demone che per il comando rsync.

È possibile avere alcune esclusioni predefinite per rsync quando viene chiamato dalla riga di comando come nella mia sintassi predefinita sopra?

Risposte:


10

Aggiungi le tue exclude a un file, quindi usa --exclude-from = / path / to / exclude_file

per esempio

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

# rsync --exclude-from=rsync.excludes

1
sembra che la sintassi sia --exclude-frome non, --exclude-filema per il resto questo sembra essere il ticket. Grazie!
Cwd,

5

No, rsyncnon ha un file di configurazione predefinito che verrà letto al momento dell'invocazione. Il meglio che puoi fare è quello che dice @frogstarr78 e creare un file di testo con motivi, nomi di file e directory da escludere, e quindi puntare rsyncsu di esso --exclude-from=filename.


2
rsync does not have a default configuration file- è deludente
Cwd

3

Mentre rsync non ti consente di impostare le opzioni predefinite, puoi creare uno script wrapper e posizionarlo più in alto nel tuo $ PATH rispetto al binario rsync.

Questo è il mio wrapper rsync in cui vive ~/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 "$@"

E cercherò ~/.rsyncignore, ./.gitignore, ./.rsyncignorei file e, se qualcuno di loro esistono, li usano come predefiniti --exclude-fromargomenti.

Cambia RSYNC e IGNORE_FILES in base alle tue esigenze e preferenze.


0

--exclude "/ *" escluderà tutto per impostazione predefinita. Ecco un esempio:

rsync -av --include "bin /" --exclude "/ *" / source_dir / / dest_dir /
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.