Je veux savoir comment utiliser rsync pour la synchronisation avec les dossiers récursifs mais j'ai seulement besoin de mettre à jour les nouveaux fichiers ou les fichiers mis à jour (seulement le contenu pas le propriétaire, le groupe ou l'horodatage) et je veux supprimer les fichiers qui n'existent pas dans la source .
Je pense que vous pouvez utiliser le -no-
options vers rsync
vers ET NON copiez la propriété ou les autorisations des fichiers que vous synchronisez.
--no-OPTION
You may turn off one or more implied options by prefixing the option
name with "no-". Not all options may be pre‐fixed with a "no-":
only options that are implied by other options (e.g. --no-D,
--no-perms) or have different defaults in various circumstances (e.g.
--no-whole-file, --no-blocking-io, --no-dirs). You may specify
either the short or the long option name after the "no-" prefix (e.g.
--no-R is the same as --no-relative).
For example: if you want to use -a (--archive) but don’t want -o
(--owner), instead of converting -a into -rlptgD, you could specify
-a --no-o (or -a --no-owner).
The order of the options is important: if you specify --no-r -a, the
-r option would end up being turned on, the opposite of -a
--no-r. Note also that the side-effects of the --files-from
option are NOT positional, as it affects the default state of several
options and slightly changes the meaning of -a (see the --files-from
option for more details).
En parcourant la page de manuel, je pense que vous voudriez utiliser quelque chose comme ceci:
$ rsync -avz --no-perms --no-owner --no-group ...
Pour supprimer des fichiers qui n'existent pas, vous pouvez utiliser le --delete
commutateur:
$ rsync -avz --no-perms --no-owner --no-group --delete ....
En ce qui concerne l'horodatage, je ne vois pas de moyen de le conserver sans modifier la façon dont vous feriez la comparaison des fichiers SOURCE vs DEST. Vous voudrez peut-être dire à rsync
d'ignorer les horodatages à l'aide de ce commutateur:
-I, --ignore-times
Normally rsync will skip any files that are already the same size
and have the same modification timestamp. This option turns off this
"quick check" behavior, causing all files to be updated.
Pour les horodatages, --no-times
pourrait faire ce que vous cherchez.
Je pense qu'il est plus facile d'éviter l'option - a
$ -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
et définissez uniquement les options souhaitées.
Si vous aimez toutes les options mais pas les modifications de l'utilisateur - o, group - g, time - t and permissions - p afin que vous puissiez soustraire ces quatre options de l'équivalent d'archive.
$ -rlD
Pour supprimer les fichiers à destination, veuillez utiliser l'option - supprimer.
À votre question: Mais je pense que tous les fichiers seront vérifiés - rsync ne peut pas transférer/vérifier uniquement les fichiers qui n'ont changé que par leur contenu.
Je pense que ce que vous cherchez est l'option
rsync -r --size-only
à partir de la page de manuel:
--size-only
This modifies rsync’s "quick check" algorithm for finding files that need to be transferred,
changing it from the default of transferring files with either a changed size or a changed
last-modified time to just looking for files that have changed in size. This is useful when
starting to use rsync after using another mirroring system which may not preserve timestamps
exactly.
Si vous voulez vraiment supprimer les fichiers manquants dans le répertoire source, utilisez --delete
Vous pouvez forcer rsync à ignorer les vérifications en fonction de l'heure et de la taille du mod de fichier et utiliser une approche basée sur chksum avec le commutateur "-c".
-c, --checksum skip based on checksum, not mod-time & size
Cela signifie qu'il doit comparer l'intégralité du fichier en morceaux (et transférer les métadonnées pertinentes entre la source et la destination pour que cela se produise), que l'heure et la taille du fichier correspondent ou non, mais ne transfèrera que les morceaux qui diffèrent. entre la source et la destination.
L'utilisation de ce commutateur en conjonction avec les autres commutateurs suggérés par d'autres devrait limiter ce qui est copié (ne copiant que ce qui a changé), et a l'avantage de faire un contrôle de cohérence entre la source et la destination, MAIS cela prend plus de temps en fonction de la vitesse de votre lien comme il doit additionner les morceaux de fichier des deux côtés et comparer).