
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