J'espère que cela ne compte pas comme une question sans vraie réponse, que je ne peux pas sembler trouver une bonne raison d'utiliser cp(1)
plus rsync(1)
dans presque toutes les circonstances. Faut - il privilégier généralement rsync
plus cp
? Existe-t-il de bonnes directives pour leur utilisation?
rsync
: Transfère les diffs, il peut utiliser la compression, il peut être utilisé à distance (et en toute sécurité), il peut être redémarré malgré une interruption, même pendant le transfert d'un seul gros fichier. "cp
: Peut-être que c'est plus simple à utiliser? Est-ce plus rapide que rsync?
Réponses:
cp
fait partie des coreutils, il est donc présent partout. En outre, il a été principalement conçu pour copier des fichiers sur un ordinateur.rsync
ne fait pas partie de coreutils, il n'est pas présent même dans l'environnement par défaut. De plus, il était principalement conçu pour transférer des fichiers sur le réseau. A égalementrsync
plus de dépendances par rapport aux coreutils, mais cette différence n'a pas beaucoup de sens.PS: Au fait, l'utilisation du CPU est toujours importante sur les systèmes embarqués.
la source
La principale raison pour laquelle vous ne voulez pas utiliser
rsync
pour chaque opération de copie, c'est parcersync
que les frais généraux sont calculés. Avant que le transfert de données ne démarre réellement,rsync
analyse tous les fichiers. Puis, avant chaque fichier, une comparaison est effectuée. Cette surcharge n'est pas négligeable, même avec les processeurs rapides disponibles en 2012. Je fais ce type de transferts tout le temps, et sur des serveurs de taille assez décente, une fois que vous commencez à traiter des quantités de données, la surcharge peut prendre du temps.Je ne dis pas ne pas utiliser
rsync
, pas du tout, utiliserrsync
quand vous pouvez économiser du temps de transfert. N'utilisez simplement pasrsync
quandcp
pourrait accomplir la même chose.Ce que je fais habituellement, apportez d'abord les données en utilisant des méthodes de copie régulières. Ensuite,
rsync
pour les modifications ultérieures, c'est à ce moment-là que ces différences peuvent être exploitées.la source
Je m'attendrais
cp
à utiliser moins de CPU lors de la copie locale car il n'utilise pas de différences alors qu'ilrsync
peut réduire les écritures lors de l'utilisation de différences. La compression doit être évitée localement car vous devez lire et écrire tout le fichier / diff de toute façon et cela nécessite des calculs supplémentaires.la source
rsync
est préférable. Mais quand il n'y a pas de différence, celarsync
n'apporte que des frais généraux sans avantage supplémentaire.rsync
d'avoir deux fois la surcharge d'E / S pour deux fichiers identiques par rapport à l'aveuglecp
: un temps de modification changé. Vous auriez à donner--size-only
pour résoudre ce problème. La seule autre façon de voir cela serait dersync
se fier aux sommes de contrôle du système de fichiers, mais pour la plupart des systèmes de fichiers, ce ne sont pas de très bons prédicteurs statistiques de l'identité.Indépendamment des frais généraux dans le cas d'un différentiel volumineux ou inexistant,
rsync
il ne semble pas avoir d'équivalent decp --reflink=always
, ce qui peut enregistrer une énorme quantité de données si la copie dans un système de fichiers qui le prend en charge (il crée des copies de copie sur écriture, donc les données en commun entre l'original et la copie (qui est, bien sûr, initialement la totalité) ne sont stockées qu'une seule fois).rsync
est cependant meilleur pour mettre à jour les copies CoW, en utilisant--inplace
.la source