Wie kann ich mit rsync Dateien standardmäßig ausschließen?


12

Wie kann ich mit rsync Dateien standardmäßig ausschließen? So beginnt meine normale rsync-Syntax:

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

Ich habe viele Erwähnungen zum Konfigurieren der /etc/rsyncd.confDatei gesehen, aber vielleicht ist das mehr für den Daemon als für den Befehl rsync.

Ist es möglich, einige Standardausschlüsse für rsync zu haben, wenn sie über die Befehlszeile aufgerufen werden, wie in meiner obigen Standardsyntax?

Antworten:


10

Fügen Sie Ihre Ausschlüsse zu einer Datei hinzu und verwenden Sie dann --exclude-from = / path / to / exclude_file

z.B

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

# rsync --exclude-from=rsync.excludes

1
sieht aus wie die syntax ist --exclude-fromund nicht --exclude-fileaber sonst scheint dies das ticket zu sein. Vielen Dank!
KWD

5

Nein, rsynces ist keine Standardkonfigurationsdatei vorhanden, die beim Aufruf gelesen wird. Das Beste, was Sie tun können, ist das, was @ frogstarr78 sagt, und erstellen Sie eine Textdatei mit Mustern, Datei- und Verzeichnisnamen, die Sie ausschließen möchten, und zeigen rsyncSie dann darauf --exclude-from=filename.


2
rsync does not have a default configuration file- das ist enttäuschend
cwd

3

Während Sie in rsync keine Standardoptionen festlegen können, können Sie ein Wrapper-Skript erstellen und dieses höher in Ihrem $ PATH als die rsync-Binärdatei platzieren.

Dies ist mein Rsync-Wrapper, in dem ich lebe ~/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 "$@"

Es wird sucht ~/.rsyncignore, ./.gitignore, ./.rsyncignoreDateien und, wenn einer von ihnen vorhanden sind , verwenden Sie sie als --exclude-fromStandardargumente.

Ändern Sie einfach RSYNC und IGNORE_FILES entsprechend Ihrer Umgebung und Ihren Vorlieben.


0

--exclude "/ *" schließt standardmäßig alles aus. Hier ist ein Beispiel:

rsync -av --include "bin /" --exclude "/ *" / source_dir / / dest_dir /
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.