Bash-Skript „rsync --include-from“ schlägt fehl

Bash-Skript „rsync --include-from“ schlägt fehl

Ich habe ein Bash-Skript geschrieben, um Ordner und Dateien von einem Computer auf unseren Backup-Server zu sichern. Mein Ziel ist es, alle Dateien, die älter als 6 Monate sind, von diesem wöchentlichen Backup auszuschließen. Dazu habe ich einen Find-Befehl verwendet, um eine txt-Datei zu erstellen, die den Pfad dieser Dateien enthält.

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/Exclusions.txt "%P\n"

Und dann habe ich die Option „--include-from“ von rsync verwendet.

rsync . -e ssh -qrtl --exclude-from=$SCRIPT_DIR/Exclusions.txt $USER@$DEST_SRV:$DEST_DIR

Das Ergebnis war, dass das Backup funktionierte, aber nicht die Einbindung. Es wurden also alle Dateien gesichert, auch die, die älter als 6 Monate waren.

Wie kann ich das tun?

Dank im Voraus

Antwort1

Laut Manpages

--exclude=PATTERN       exclude files matching PATTERN
--exclude-from=FILE     read exclude patterns from FILE
--include=PATTERN       don't exclude files matching PATTERN
--include-from=FILE     read include patterns from FILE

Der Ausschluss erfolgt anhand des Lesemusters der Dateien und nicht anhand der Dateinamen selbst.

Ich stimme zu, dass das Einschließen/Ausschließen von Dateien anhand von Namen auch praktisch sein könnte, aber so funktioniert es nicht.

Um Dateien einzuschließen, die neuer als vor einer Woche sind, können Sie Folgendes versuchen:

--files-from=<(find . -mtime -7 -print0)

Antwort2

Ok, ich habe mein Problem gelöst! Die Zeile „find“ bleibt gleich:

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/includes.txt "%P\n"

Und ich verwende die Option „--files-from“ anstelle von „--exclude-from“

rsync . -e ssh -qrtl --files-from=$SCRIPT_DIR/includes.txt $USER@$DEST_SRV:$DEST_DIR

verwandte Informationen