Ich benutze, rsync -rlptD
um ein Verzeichnis von einem anderen Benutzer zu kopieren. Es gibt einige Dateien (ich habe keine Möglichkeit, diese im Voraus zu kennen), die ich nicht kopieren darf. Gibt es eine Möglichkeit, rsync diese zu ignorieren. Das Problem ist, dass mein Bash-x-Skript beendet wird, wenn rsync einen Wert ungleich Null zurückgibt.
permissions
rsync
error-handling
JeffCharter
quelle
quelle
Antworten:
Rsync hat dafür keine Option. Ich sehe zwei Lösungen. Eine besteht darin, rsync-Fehlermeldungen zu analysieren. das ist nicht sehr robust. Die andere Möglichkeit besteht darin, eine Liste mit nicht lesbaren Dateien zu erstellen, die gefiltert werden sollen.
Wenn Ihr
find
nicht über-readable
und-executable
ersetzen Sie sie durch die entsprechende-perm
Richtlinie.Dies setzt voraus, dass keine unlesbaren Dateien vorhanden sind, deren Name eine neue Zeile enthält. Wenn Sie mit solchen Problemen fertig werden müssen, müssen Sie eine durch Nullen getrennte Dateiliste wie diese erstellen und die
-0
Option übergeben anrsync
:quelle
stat()
ziemlich schlecht wäre , jede Datei zweimal (einmal per rsync und einmal per find) zu haben.\!
zitiert den!
Operator, um ihn vor Shell-Erweiterung zu schützen. Der Backslash ist hier eigentlich nicht notwendig, da sich keine Shell ausdehnt,!
wenn ein Leerzeichen folgt, aber es tut nicht weh. Was ist los mit versteckten Dateien?Ich habe eine einfache Lösung für diese spezielle Situation gefunden:
Dies gibt zurück,
0
wenn der zurückgegebene Code 0 oder 23 war, und gibt in allen anderen Fällen den Exit-Code zurück.Es ist jedoch wichtig zu beachten, dass dies alle
Partial transfer due to error
Fehler ignorieren würde , nicht nur die der Erlaubnis , da alles abgefangen wird, was den Code verlässt23
. Weitere Informationen zu den rsync-Statuscodes finden Sie unter diesem Link .quelle