web-dev-qa-db-fra.com

Est-ce que rsync vérifie les copies de fichiers sur les lecteurs locaux?

J'utilise rsync pour effectuer une sauvegarde incrémentielle de l'ext3 HD local de mon ordinateur portable sur un ext4 HD connecté via USB à l'ordinateur portable. Je suppose que rsync traite ces deux disques comme étant locaux. Je me demande donc si rsync effectue un type de vérification des fichiers copiés.

"Notez que rsync vérifie toujours que chaque fichier transféré a été correctement reconstruit du côté de la réception en vérifiant la somme de contrôle du fichier entier générée au fur et à mesure que le fichier est transféré. La vérification -transfer n'a rien à voir avec la vérification "Cette vérification doit être mise à jour?", mais cela est contredit sur StackExchange . Je me demande donc si je dois effectuer la vérification moi-même? Et si oui, devrais-je utiliser diff ou rsync -c après l'exécution réelle de rsync?

Autant que je sache, la vérification effectuée par rsync n'est qu'une vérification du transfert du fichier, pas de l'écriture du fichier sur le disque. La vérification de l'écriture du fichier sur le disque est, autant que je sache, laissée au pilote/système de fichiers sous-jacent. Est-ce assez sûr? Ext4 est-il capable de détecter et d’avertir si une écriture a mal tourné? Et rsync le signalera-t-il?

Comme il s’agit davantage d’une question de vérification des données et d’une éventuelle corruption des données, j’ai inséré quelques balises supplémentaires afin que mon message soit lu par les bonnes personnes. J'ai aussi essayé de développer un peu la question elle-même.

1
jbang

Est-ce assez sûr?

Je suppose que oui. Si vous voulez que rsync effectue une vérification, vous devez exécuter rsync -c après la copie pour pouvoir effectuer une vérification supplémentaire à l'aide de rsync. Ou utilisez un md5sum sur les fichiers.

Ext4 est-il capable de détecter et d’avertir si une écriture a mal tourné?

Oui. Nous parlons de pilotes et du système de fichiers, donc une erreur quelconque entraînera un code de sortie. Bien sûr, il existe un pire scénario: si le pilote/système de fichiers est défectueux, le code de sortie pourrait être envoyé à tort comme étant correct. Je ne voudrais pas supposer que cela soit correct moi-même et utiliser un outil tel que md5sum pour vérifier les résultats moi-même.

Et rsync le signalera-t-il?

Dès que le destinataire reçoit une erreur, rsync le sera également.

1
Rinzwind

La partie de la page de manuel que vous mentionnez concerne l’option -c. Comme l'homme lit au début

Rsync trouve les fichiers à transférer à l'aide d'un algorithme lqquick checkrq (par défaut) qui recherche les fichiers dont la taille a changé ou dont l'heure de la dernière modification a été modifiée. Toute modification des autres attributs préservés (comme demandé par les options) est effectuée directement sur le fichier de destination lorsque la vérification rapide indique qu'il n'est pas nécessaire de mettre à jour les données du fichier.

avec l'option -c, il vérifie si deux fichiers ont la même taille et, le cas échéant, vérifie les sommes de contrôle des deux.

rsync vérifie également le transfert du fichier via le réseau, pas le disque. Si vous voulez vous assurer que vos données ne sont pas corrompues, vous pouvez utiliser des utilitaires tels que md5sum.

en remarque: Je ne pense pas que cette procédure puisse être qualifiée de "sauvegarde incrémentielle" car les sauvegardes incrémentielles stockent les différences entre le système et une sauvegarde précédente. Je pense que le "transfert progressif" est plus approprié.

1
user448115