J'utilise rsync -rlptD
pour copier un répertoire d'un autre utilisateur. Il y a quelques fichiers (je n'ai aucun moyen de les connaître à l'avance) que je n'ai pas la permission de copier. Existe-t-il un moyen pour que rsync les ignore? Le problème est que si rsync retourne non nul, mon script bash -x se fermera.
permissions
rsync
error-handling
JeffCharter
la source
la source
Réponses:
Rsync n'a pas d'option pour cela. Je vois deux solutions. L'une consiste à analyser les messages d'erreur rsync; ce n'est pas très robuste. L'autre consiste à générer une liste de fichiers illisibles à filtrer.
Si votre
find
n'a pas-readable
et-executable
, les remplacer par les appropriée-perm
directive.Cela suppose qu'il n'existe aucun fichier illisible dont le nom contient une nouvelle ligne. Si vous devez y faire face, vous devrez produire une liste de fichiers délimités par des valeurs nuls comme celle-ci et passer l'
-0
option àrsync
:la source
stat()
chaque fichier deux fois (une fois via rsync et une fois via find) serait assez mauvais.\!
cite l'!
opérateur pour le protéger contre l'expansion du shell. La barre oblique inversée n'est pas réellement nécessaire ici car aucun shell ne se dilate!
lorsqu'il est suivi d'un espace, mais cela ne fait pas de mal. Quel est le problème avec les fichiers cachés?J'ai fait une solution de contournement simple pour cette situation spécifique:
Cela renvoie
0
si le code renvoyé était 0 ou 23 et renvoie le code de sortie dans tous les autres cas.Il est important de noter, cependant, que cela ignorerait toutes les
Partial transfer due to error
erreurs, pas seulement celles liées aux autorisations , car cela interceptera tout ce qui sort du code23
. Pour plus d'informations sur les codes d'état rsync, veuillez consulter ce lien .la source