Comment reprendre le processus de copie de fichier $A
en toute sécurité et de manière fiable dans l'emplacement de sauvegarde $B
fait avec pv "$A" > "$B"
ou cat "$A" > "$B"
?
(supposons que le fichier $A
soit très volumineux, par exemple un fichier d'instantané LVM2)
Est-ce réalisable avec dd
?
Préféré: solutions bash ou python (de préférence python3).
Exemple de scénario: pv "$A" > "$B"
interrompu après avoir copié 90%. Comment le reprendre, afin de terminer le processus de copie sans recommencer tout le travail?
Réponses:
Oui, vous pouvez utiliser dd pour ignorer les blocs.
Les paramètres importants ici sont
skip
ainsi queseek
:skip
: ignorer les blocs de taille ibs BLOCKS au début de l' entréeseek
: ignorer les blocs de taille obsolète BLOCKS au début de la sortiela source
Vous voulez
rsync
:la source
--append
.--append
a changé depuis la version 3.0.0. Pourriez-vous m'assurer si--append
ignore actuellement la partie déjà copiée, tout en--append-verify
lisant tout A pour la vérification de la somme de contrôle? (avant la version 3.0.0.--append
se comportait comme--append-verify
-> C'est la raison d'un malentendu)--append
ajoute aveuglément au fichier.--append-verify
fait la même chose mais exécute les sommes de contrôle à la fin, si les sommes de contrôle ne correspondent pas,rsync
semble faire une nouvelle copie.Avez-vous essayé
dd skip
avec un décalage de la taille réelle du fichier B (indépendamment de la taille du bloc de partition)?Cela vous obtiendrait la partie manquante. À ce stade, vous pouvez directement
cat
les regrouper dans un nouveau fichier aveccat "$B" "$A2" >> "$C"; #mv "$C" "$B"
(où se$C
trouve bien sûr la partie manquante sur un chemin avec suffisamment d'espace).cat
fonctionne très bien pour la concaténation des binaires aussi et dans ce cas, vous n'avez pas plusieurs en-têtes de fichier qui empêcheraient les fusions scriptées simples. Il y a une chance que la fin de$B
soit corrompue, mais dans ce cas, vous pouvez la raccourcir et relire davantage$A
à l'étape dd initiale.la source