Est-il prudent d'utiliser un disque dur pendant l'exécution de rsync?

27

Je prévois de sauvegarder mes disques durs volumineux en rsyncprévoyant que cela prendra quelques jours. Est-il prudent d'utiliser le disque dur d'origine (ajout de fichiers) pendant qu'il rsyncfonctionne? Ou est-il préférable de laisser les disques durs intacts jusqu'à la rsyncfin?

Googlebot
la source
1
Notez que "utiliser" peut être aussi simple que d’avoir un navigateur ouvert et de ne rien faire. Les navigateurs ont tendance à écrire beaucoup de choses aléatoires dans leurs répertoires de données. Dans le pire des cas, vous obtenez une sauvegarde incohérente, c’est-à-dire que lors de la restauration, vous ne pourrez peut-être pas restaurer vos onglets, vos signets risquent de disparaître (car la base de données est corrompue) ou quelque chose de cet ordre de grandeur.
Jonas Schäfer
Si vous avez suffisamment de données à sauvegarder, vous pouvez envisager de fractionner la sauvegarde en éléments plus petits (sous-arbres). Ensuite, seule la partie en cours d’exécution doit rester aussi statique que possible - et vous pouvez voir quelle partie l’est en suivant la progression de votre script (avec un journal, etc.). Puisqu'il ne s'agit pas d'une grosse sauvegarde, certaines pièces pourraient ne pas être parfaitement synchronisées avec les autres, mais si vous exécutez une grosse sauvegarde sur un système en direct, cela arrivera quand même.
Joe

Réponses:

34

Comme d'autres l'ont déjà souligné, il est prudent de lire à partir du disque source ou d'utiliser le disque cible en dehors du répertoire cible lorsque rsync est en cours d'exécution. Il est également sûr de lire dans le répertoire cible, surtout si le répertoire cible est rempli exclusivement par l'exécution de rsync.

Ce qui n'est généralement pas sûr, c'est d' écrire dans le répertoire source pendant que rsync est en cours d'exécution. "Écriture" désigne tout ce qui modifie le contenu du répertoire source ou de l'un de ses sous-répertoires, ainsi les mises à jour de fichiers, les suppressions, la création, etc.

Cela ne casse rien, mais la modification peut ou non être récupérée par rsync pour être copiée vers l'emplacement cible. Cela dépend du type de changement, si rsync a déjà analysé ce répertoire particulier et si rsync a déjà copié le fichier ou le répertoire en question.

Cependant, il existe un moyen simple de contourner ce problème : une fois l'opération terminée, exécutez à nouveau rsync avec les mêmes paramètres. (À moins que vous n'ayez un paramètre de suppression funky; si vous le faites, soyez un peu plus prudent.) Cela entraînerait une nouvelle analyse de la source et le transfert de toutes les différences qui n'auraient pas été détectées lors de l'exécution initiale.

La deuxième exécution ne doit transférer que les différences qui se sont produites lors de la précédente exécution de rsync et, en tant que telles, se terminerait beaucoup plus rapidement. Ainsi, vous pouvez utiliser l'ordinateur normalement lors de la première utilisation, mais évitez autant que possible de modifier la source lors de la deuxième utilisation. Si vous le pouvez, envisagez fortement de remonter le système de fichiers source en lecture seule avant de lancer la deuxième exécution de rsync. (Quelque chose comme mount -o ro,remount /media/sourcedevrait faire.)

un CVn
la source
7
On peut même faire une troisième manche après une deuxième manche: cela risque de prendre encore moins de temps ... ;-)
gerlos le
5
@gerlos Un modèle semble émerger. Il semble presque que l’on puisse continuer à exécuter la commande rsync à la fin de chaque session d’utilisation, et que cela se ferait en quelques jours.
Monty Harder le
5
@gerlos Si vous remontez en lecture seule avant d'exécuter rsync une deuxième fois, cela ne sera pas nécessaire et la sauvegarde sera tout à fait garantie pour être cohérente tout en réduisant au minimum le temps pendant lequel vous ne pouvez pas écrire dans le système de fichiers source.
un CVn
1
@gerlos En passant, c'est pourquoi j'ai une entrée qui ressemble beaucoup à celle @reboot root find / -print &>/dev/nullde ma crontab système, pour remplir le cache. (L'entrée réelle est plus complexe pour prendre en compte quelques cas particuliers sur mon système particulier.) Elle utilise un peu de RAM et une certaine heure wallclock tôt après le démarrage pour améliorer l'analyse de l'arborescence de répertoires un peu moins.
un CVn le
1
@ MichaelKjörling: idée intéressante de mettre en cache la hiérarchie. Mais peut-être devriez-vous exécuter updatedb(construction de la base de données de localisation) ou slocate -u(idem si vous avez slocate) à la place? De cette façon, vous mettez toujours en cache la hiérarchie, mais vous créez également les bases de données de localisation ou de slocate, ce qui vous permet d’utiliser ces commandes pour trouver rapidement de nombreux fichiers?
Olivier Dulac
22

Cela dépend du système de sauvegarde que vous utilisez, mais en général, il est déconseillé de modifier le contenu d'un périphérique pendant la sauvegarde. Cependant, vous pouvez en lire le contenu. c'est une opération sûre, même si cela ralentit le processus.

Dans votre cas, rsynccréera une liste de fichiers puis lancera la sauvegarde. Par conséquent, aucun fichier ajouté au disque dur source après le début de la sauvegarde ne sera copié.

Ce que je fais est de ne pas utiliser de périphérique du tout pendant une sauvegarde. C'est le moyen le plus sûr d'obtenir une sauvegarde rapide et cohérente.

dr01
la source
14
Je le laisse habituellement fonctionner puis je fais une deuxième exécution rsyncqui se terminera dans quelques secondes car seuls les fichiers que j'ai modifiés au cours de l'exécution seront copiés. Tout sera dans les caches, il est donc beaucoup plus facile de s’abstenir de modifications pendant cette période.
Martin Ueding le
15

Il est prudent de lire les données des zones sources en cours d’ rsyncexploitation, mais si vous mettez à jour quoi que ce soit, la copie qui rsynccrée / met à jour risque d’être incohérente:

  1. Si vous mettez à jour un fichier que rsync a déjà analysé, la mise à jour ne sera pas visualisée avant une prochaine exécution. Si vous mettez à jour un fichier qui n'a pas encore été analysé, la modification sera respectée dans la destination. Si vous mettez à jour des fichiers qui ont été analysés et qui n’ont pas été analysés, vous obtiendrez un mélange d’anciennes et de nouvelles versions dans la destination.

  2. Si vous ajoutez un fichier à un répertoire qui a déjà été analysé, il ne sera pas saisi de la copie de destination cette fois-ci. Si vous supprimez un fichier d'un répertoire qui a déjà été analysé, il restera cette fois dans la copie de destination. En fonction de la manière dont vous appelez, rsynctoute l’arbre peut être analysé au début ou de manière incrémentielle au fur et à mesure que le processus de synchronisation se produit.

  3. Dans certaines circonstances rsync, vous verrez l'incohérence et vous avertir. Si vous supprimez un fichier ou un sous-répertoire d'un répertoire qui a déjà été analysé mais dont le contenu n'a pas été analysé, vous obtenez un message d'erreur indiquant que l'objet est manquant. Dans des circonstances similaires, il peut parfois (si la taille et / ou l'horodatage a changé) également avertir de la modification des fichiers en cours d'analyse.

Pour certaines sauvegardes, cette incohérence peut ne pas être un problème majeur, mais dans la plupart des cas, il est recommandé de ne pas essayer de synchroniser une source en évolution active.

Si vous utilisez LVM pour diviser votre système de stockage, vous pouvez utiliser un instantané temporaire pour effectuer une sauvegarde ponctuelle. Cela nécessite que vous disposiez de suffisamment d'espace sur le groupe de volumes pour créer un volume d'instantané suffisamment grand pour contenir toutes les modifications qui surviendront pendant la durée pendant laquelle l'instantané est nécessaire. Consultez la documentation de LVM (ou l'un des nombreux exemples en ligne: recherchez "Sauvegarde d'instantané LVM" ou similaire) pour plus de détails.

Même sans LVM, certains systèmes de fichiers prennent en charge les instantanés - vous voudrez peut-être également examiner cette option.

Si vous souhaitez sauvegarder de gros volumes actifs sans interruption prolongée et que vous ne pouvez pas utiliser d'instantanés, il peut suffire d'exécuter l'analyse "en direct", puis d'arrêter l'accès au volume et d'exécuter un autre processus rsync, qui peut prendre beaucoup moins de temps (si nécessaire). très peu de choses ont changé, il suffit de parcourir l’arborescence puis les quelques fichiers mis à jour). De cette façon, la durée pendant laquelle vous devriez éviter les changements pourrait être beaucoup plus courte.

David Spillett
la source
J'aime mieux votre réponse parce que vous entrez dans les détails de ce qui se passe si des fichiers sont modifiés. Vous fournissez non seulement une alternative, mais vous corrigez également les incohérences qu'elle peut entraîner (mise à jour manquante, avertissement concernant un fichier manquant, etc.). Dans ma situation, utiliser rsync pour créer une sauvegarde longue, puis la réactualiser quelques jours plus tard, n’a rien de grave, et cela ressemble également à la situation du PO. Il ne semble pas qu'il ait besoin d'une sauvegarde de niveau entreprise dès la première fois, mais il souhaite simplement utiliser l'ordinateur entre-temps. Je dis simplement de lancer rsync une seconde fois pour récupérer les fichiers mis à jour.
ibennetch
11
  • Le disque dur source peut tout lire pendant la synchronisation.

  • Le disque dur source peut écrire n’importe quel contenu non lié au contenu de rsync.

  • Le disque dur de destination peut tout lire pendant la synchronisation.

  • Le disque dur de destination peut écrire n’importe quoi pendant la synchronisation avec la condition d’avoir suffisamment d’espace réservé pour le contenu synchronisé.

Bien sûr, dans tous les cas, il y aura une réduction des performances.

Surmente
la source
0

Toutes les réponses actuelles parlent de sécurité des données en termes de cohérence et d’assurance d’un matériel parfait.

Une autre chose à considérer est la sécurité du matériel lui-même. Si vous possédez des disques durs non sauvegardés qui risquent d’être en panne (vous ne le savez peut-être même pas encore) et que vous effectuez une première sauvegarde complète, ne l’utilisez pas. Ne le montez même pas si les données sont critiques. Vous pouvez utiliser un outil tel que ddcloner le disque en tant que périphérique bloc. Ce que vous ne voulez pas que la tête de disque recherche, et éventuellement écrit pendant que vous essayez de faire une sauvegarde. De ddplus, la sauvegarde initiale devrait être plus rapide car elle copie simplement les bits dans l’ordre (si le lecteur n’est pas entièrement plein, je suppose que rsync gagnerait également dans le cas initial).

Pour les sauvegardes incrémentielles ultérieures, rsync est un excellent choix et je suis d’accord à 100% avec les autres réponses.

Zak
la source
1
Si les médias sont marginaux ou même potentiellement marginaux, ce ddn’est pas le meilleur choix. Utilisez ddrescueplutôt il gère beaucoup mieux les échecs partiels. Mais ce n'était pas une considération dans la question initiale.
un CVn
@ MichaelKjörling C'est un bon point.
Zak