Hallo,
ich möchte mit rsync nur einige bestimmte Dateien und Ordner sichern. Die Suchmuster der zu sichernden Dateien möchte ich nun in einer include Datei wie folgt eingeben:
Beispiel (Datei: rsync_include):
+ /var/log/*
+ /srv/*
- /*
Es soll also immer vom Root-Verzeichnis aus alles ausgeschloßen werden mit Ausnahme von betimmten Dateien und Ordnern.
dann rufe ich rsync auf:
rsync -a --include-from="rsync_include" / /DATA/test
Nun wird der Befehl ohne Fehler ausgeführt aber die Verzeichnisse werden nicht kopiert. Es wird nur ein Leeres Test-Verzeichnis erstellt.
Wenn ich aus dem Suchmuster die Zeile 3 "- /*" entferne dann wird einfach alles kopiert, also das komplette Root-Verzeichnis "/", ändere ich die Reihenfolge der Suchmuster-Datei wie folgt:
- /*
+ /var/log/*
+ /srv/*
dann wird ebenfalls nichts kopiert.
Wenn ich Dateien so erstelle z.B. rsync_inc
/var/log/*
/srv/*
und rsync_excl
/*
und rsync dann wie folgt aufrufe:
rsync -a --include-from="rsync_inc" --excluder-from="rsync_excl" / /DATA/test
dann wird ebenfalls nichts koopiert.
Das Einzige was funktioniert ist, wenn ich nur --exclude-from verwende und in der Exclude-Datei alle Verzeichnisse explizit angebe die nicht kopiert werden sollen:
z.B:
/bin*
/boot*
/dev*
/etc*
/home*
/lib*
/lost+found*
/media*
/mnt*
/opt*
/proc*
/root*
/sbin*
/tmp*
/usr*
Das ist aber sehr umständlich, denn einige Dateien befinden sich auch in Unterverzeichnisse, dann müßte ich auch alle anderen Unterverzeichisse und Dateien angeben die ich nicht benötige etc.. Ich brauche also eine Möglichkeit zuerst komplett alle Dateien auszuschließen um dann nur nur die Verzeichnisse und Dateien explizit anzugeben, die kopiert werden sollen.
Ich sitze bereits seit heute morgen dran und habe mittlerwile keine Ideen mehr was ich noch anders machen könnte...
Gruss
Jack
RSYNC / Alles ausschließen und nur bestimmte Dateien und Verzeichnisse kopieren?
-
- Posts: 67
- Joined: 2002-12-19 13:41
-
- Posts: 67
- Joined: 2002-12-19 13:41
Problem gelöst :-)
Hab´s herausgefunden. Hier die Lösung:
wenn man nur ein bestimmtes Unterverzeichnis mit seinen Dateien und eventuellen Unterverzeichnissen kopieren will, dann sollte die include-Datei wie folgt aussehen:
+ /var/
+ /var/log/
+ /var/log/apache2/
+ /var/log/apache2/**
- *
rsync -a --include-from="meine_includes" / /BACUKP
und wenn man z.B. noch weitere Verzeichnisse kopieren will
+ /var/
+ /var/log/
+ /var/log/apache2/
+ /var/log/apache2/**
+ /var/log/radius/
+ /var/log/radius/**
+ /home/
+ /home/**
- *
WICHTIG sind vor allem die "**", bei "*" wird nämlich nur bis zum nächsten Unterverzeichnis kopiert. Das Unterverzeichnis wird dann jedoch OHNE Inhalt kopiert!
Und da soll mal einer einfach so drauf kommen :-)
Gruss
jack
wenn man nur ein bestimmtes Unterverzeichnis mit seinen Dateien und eventuellen Unterverzeichnissen kopieren will, dann sollte die include-Datei wie folgt aussehen:
+ /var/
+ /var/log/
+ /var/log/apache2/
+ /var/log/apache2/**
- *
rsync -a --include-from="meine_includes" / /BACUKP
und wenn man z.B. noch weitere Verzeichnisse kopieren will
+ /var/
+ /var/log/
+ /var/log/apache2/
+ /var/log/apache2/**
+ /var/log/radius/
+ /var/log/radius/**
+ /home/
+ /home/**
- *
WICHTIG sind vor allem die "**", bei "*" wird nämlich nur bis zum nächsten Unterverzeichnis kopiert. Das Unterverzeichnis wird dann jedoch OHNE Inhalt kopiert!
Und da soll mal einer einfach so drauf kommen :-)
Gruss
jack
-
- Posts: 471
- Joined: 2003-08-21 10:21
- Location: Berlin
Re: RSYNC / Alles ausschließen und nur bestimmte Dateien und Verzeichnisse kopieren?
Eine andere Möglichkeit ist die Option -C (--cvs-exclude). Du kannst dann .cvsignore-Dateien anlegen (oder von CVS angelegte mitbenutzen), in denen die Patterns von Dateien stehen, die ab diesem Verzeichnis NICHT mit kopiert werden sollen.jack88 wrote:ich möchte mit rsync nur einige bestimmte Dateien und Ordner sichern.