web-dev-qa-db-fra.com

Rsync -avzhp suit les lignes hautes au lieu de les copier comme des hardlinks

J'utilise RSNApShot pour créer des sauvegardes horaires/hebdomadaires/mensuelles de mon "travail" -share. Maintenant, j'essaie de copier tout le répertoire de sauvegarde sur un lecteur externe à l'aide de RSYNC.

J'ai utilisé cette commande/paramètres dans une session d'écran (oui, le RSYNC-exclude.txt réside dans le Dir I exécuté la commande de)

rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;

Le tout est en cours d'exécution sur un TS-439 QNAP, le lecteur interne est un seul disque (pas de raid) formé EXT4, le lecteur externe est formé EXT3.

Ce qui se passe est: rsync suit chaque HardLink et copie le fichier actuel au lieu de recréer le disque dur mis à jour sur le lecteur externe. Je n'ai pas reconnu cela tout de suite que le lecteur externe a fini par être tranchée avec des copies XXX des mêmes fichiers.

Ce que je veux réaliser, c'est de la copie de la structure du fichier entière générée par RSNApShot sur le lecteur externe en tenant compte des hardlinks pour économiser de l'espace. Remarque: cela ne doit pas nécessairement être fait en utilisant RSYNC.

Merci pour vos idées et votre temps. J'apprécierais votre aide, votre gros temps.

Mise à jour: J'ai appris que RSNApShot n'utilise pas de liens symboliques, il utilise des hardlinks, donc j'utilise maintenant l'option -h qui devrait préserver la structure dureLink ACORDING à rsnapshot à plusieurs destinations (ou maintenir la structure de liens durs) Mais cela ne fonctionnera toujours pas ... Qu'est-ce que je manque ici?

Mise à jour 2: J'ai trouvé un autre avis/déclaration sur ce sujet ici: RSYNC avec --Hard-links gèle Steven lundi suggère N'essayez pas de structures de fichiers RSYNC Grandes structures contenant des hardlinks, car elle absorbe beaucoup de mémoire, une tâche difficile pour RSYNC. Donc, probablement une meilleure solution ferait une .IMG de la structure de données que j'essaie de sauvegarder. Que pensez-vous?

13
woerndl

Le rsync commande -H (ou --hard-links) L'option fera, en théorie, faire ce que vous essayez d'accomplir, ce qui est, en bref: créer une copie de votre système de fichiers qui conserve la structure liée du disque dur de l'original. Comme je l'ai mentionné dans ma réponse à une autre question similaire , cette option est condamnée à l'échec une fois que votre système de fichiers source augmente au-delà d'un certain seuil de complexité durable.

L'emplacement précis de ce seuil peut dépendre de votre RAM et le nombre total de liaisons durs (et probablement un certain nombre d'autres choses), mais j'ai constaté qu'il ne reste plus à tenter de la définir précisément. Qu'est-ce que vraiment est que le seuil est trop facile à traverser dans des situations du monde réel, et vous ne saurez pas que vous ont le traversa, jusqu'à ce que la journée vienne que vous essayez de courir un rsync -aH ou un cp -a qui luttent et échoue finalement.

Ce que je recommande, c'est la suivante: Copiez votre système de fichiers liés lourdement dur comme une seule unité, pas en tant que fichiers. C'est-à-dire, copiez la partition de système de fichiers entière comme une grosse blob. Il existe un certain nombre d'outils disponibles pour faire cela, mais le plus omniprésent est dd.

Avec le microprogramme de stock, votre QNAP NAS doit avoir dd intégré, ainsi que fdisk. Avec fdisk, créez une partition sur le Lecteur de destination qui est au moins aussi grand que la partition source. Ensuite, utilisez dd pour créer une copie exacte de votre partition source sur la partition de destination nouvellement créée.

Bien que la copie dd est en cours, vous devez vous assurer que rien ne change dans le système de fichiers source, de peur de vous retrouver avec une copie corrompue sur la destination. Une façon de faire c'est à umount la source avant de commencer le processus de copie; Une autre façon est de monter la source en mode lecture seule.

10
Steven Monday

-l est pour les liens symboliques, pourquoi ferait-il quelque chose pour les hardlinks?

(Désolé, c'est une réponse et non un commentaire, je n'ai pas encore de commentaire et cette réponse avait besoin d'une réponse)

Une autre note qui devrait être un commentaire: est-ce tout le matériel natif ou êtes-vous sur une machine virtuelle, montage réseau?

Éditer

ignorer mon commentaire précédent sur la raison pour laquelle vous utilisez des hardlinks, j'ai raté le rsnapshot commentaire.

Il serait utile d'avoir un test qui teste d'abord RSYNC entre deux répertoires locaux Disk local, puis sur votre disque distant. Ce petit test montre le -H Option wokrs comme prévu. Les -i Option pour ls montre les inodes, montrant ainsi que les liens ont été préservés, sans copie supplémentaire.

$ rsync -avzHP src/ dest
sending incremental file list
created directory dest
./
file111_prime.txt
           9 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/3)
file111.txt => file111_prime.txt

sent 156 bytes  received 59 bytes  430.00 bytes/sec
total size is 18  speedup is 0.08

$ ls -liR
.:
total 8
414044 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 dest
414031 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 src

./dest:
total 8
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

./src:
total 8
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

Un test ultérieur rsync -avzHP src/ Host:/tmp à un hôte distant toujours maintenu les hardlinks

1
nhed

C'est un coup long, mais si vous ne trouvez pas une autre solution, je suggérerais d'essayer de formater le lecteur USB comme ext4. Peut-être que cela pourrait être le problème: https://bugzilla.samba.org/show_bug.cgi?id=767

Compte tenu de suffisamment de liens difficiles dans un dossier source et d'un petit volume de destination suffisamment petit, la copie avec RSYNC --Hard-Links peut échouer. RSYNC échoue en épuisant le nombre maximum de liens durs sur la destination <...> Le problème réel n'est pas RSYNC, mais plutôt le système de fichiers sous-jacents.

1
Motsel

Avez-vous essayé d'ajouter le -l option?

Je connais la page de l'homme dit qu'il est inclus dans -a Mais les pages d'homme ne sont pas toujours précises à 100%.

0
Ladadadada