So schließen Sie Verzeichnisse doppelt ein / aus

9

Ich verwende Duplizität, um einige meiner Dateien zu sichern. Die Manpage ist in Bezug auf die Einschluss- / Ausschlussmuster etwas verwirrend. Ich möchte folgende Dinge sichern:

/storage/include
/otherthings

aber nicht

/storage/include/exclude

Die Include-Datei sieht derzeit so aus:

+ /storage/include
- /storage/include/exclude
+ /otherthings
- ** 

Duplizität wird wie folgt aufgerufen:

/usr/bin/duplicity --include-globbing-filelist /Path/to/file/above / target

Es funktioniert einfach nicht. Bei jeder Sicherung werden auch die Dateien in / storage / include / exclude eingeschlossen.

int2000
quelle
Woher wissen Sie, dass dies die Syntax der Include-Datei ist? Vielleicht würde das auch funktionieren : duplicity --exclude-filelist "/Path/to/filelist/without-or+/to-exclude" / target. (Hinweis: Ich verwende nicht duplicity, nur einen Vorschlag basierend auf der Handbuchseite, die ich gefunden habe)
JMCF125

Antworten:

9

Im Dateiauswahlbereich der duplicityManpage heißt es:

Jede Dateiauswahlbedingung stimmt entweder mit einer bestimmten Datei überein oder nicht. Eine bestimmte Datei wird vom Dateiauswahlsystem genau dann ausgeschlossen, wenn die erste übereinstimmende Dateiauswahlbedingung angibt, dass die Datei ausgeschlossen werden soll. Andernfalls ist die Datei enthalten.

Dies bezieht sich auf die Priorität der Befehlszeilenoptionen --include / --exclude. Auf der Handbuchseite finden Sie jedoch später die relevanten Informationen für die von --include-globbing-filelistIhnen verwendete Option:

The --include-globbing-filelist and --exclude-globbing-filelist options also 
specify filelists, but each line in the filelist will be interpreted as a
globbing pattern the way --include and --exclude options are interpreted
(although "+ " and "- " prefixing is still allowed). For instance, if the
file "globbing-list.txt" contains the lines:

    dir/foo
    + dir/bar
    - ** 

Then --include-globbing-filelist globbing-list.txt would be exactly the same
as specifying --include dir/foo --include dir/bar --exclude ** on the command
line. 

Was passiert ist, dass es /storage/include/excludemit der ersten Zeile übereinstimmt, daher ist es enthalten. Sie sollten im Allgemeinen spezifischere Anweisungen vor weniger spezifischen verwenden. Folgendes sollte für Sie funktionieren:

- /storage/include/exclude
+ /storage/include
+ /otherthings
- ** 
Anthon
quelle
Nett. Es klappt. Noch eine Frage: Wenn ich nur ausschließen möchte, sage "txt" -Files im Ausschlussverzeichnis. Wie mache ich das? - /storage/include/exclude/*.txt hat nicht funktioniert
int2000
@ int2000 Das sollte IMHO funktionieren, aber solche Muster werden nicht explizit getestet . Es könnte also ein Problem geben. Könnten Sie verwenden /storage/include/exclude/**.txtoder zumindest versuchen, ob das funktioniert. Wenn nicht, haben Sie möglicherweise einen Fehler im passenden Code in selection.py gefunden
Anthon