Existe-t-il un moyen d'obtenir rsync pour imprimer les chemins de fichiers complets vers tous les fichiers qui sont différents sans réellement transférer de fichiers?
Alternativement, j'ai besoin d'un moyen de différencier les fichiers sur deux arbres (via SSH) en fonction uniquement du changement de taille ou de la dernière modification.
--dry-run
dépendra de votre utilisation de-v
et--progress options
- donc si vous n'obtenez aucune sortie, vérifiez que ces options sont définies selon les besoins. J'ai remarqué qu'il enverra des noms de répertoire même lorsque les fichiers n'ont pas changé, mais vous pouvez les filtrer en passant la sortiesed
ou similaire.Je préfère utiliser le format --out pour voir les détails, en le redirigeant vers moins:
la source
rsync -rvn localdir targetdir
Le -n signifie afficher uniquement les actions (sans qu'aucune action ne soit exécutée).
Notez que vous avez besoin du 'v' ou il ne vous montrera rien! (le reste des réponses l'oublie ...)
la source
S'appuyant sur d'autres réponses et /server//a/618740/114520
--dry-run
(ou-n
) pour éviter toute modification--itemize-changes
(ou-i
) pour trouver des changements--archive
(ou-a
) pour obtenir tous les sous-répertoiresegrep
pour filtrer les entrées commençant par un point (pas de changement)Ce qui vous donne:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\."
Si vous ne voulez qu'une seule façon, vous pouvez changer la commande:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|<)"
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|>)"
Et si vous n'avez besoin que des fichiers, ajoutez simplement de la
awk
magie:rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\." | awk '{print $2}'
la source
J'irais pour quelque chose comme ça:
Par exemple:
la source
La vérité est que si vous exécutez
rsync -v ...
et qu'il affiche un nom de fichier à l'écran, ce fichier est en cours de transfert (ou aurait été transféré, si vous effectuez un --dry-run). Pour savoir pourquoi rsync était sur le point de le transférer, utilisez le mode de détail: /server//a/618740/27813Comme d'autres l'ont noté, par défaut, rsync compare uniquement en fonction de la taille du fichier et de l'horodatage, qui doivent tous deux correspondre, sinon une "copie delta" est démarrée sur ce fichier. Si vous voulez vraiment voir quels fichiers sont différents, utilisez le mode de somme de contrôle "-c".
la source