Je faisais un: tar -cvfet je devais le tuer avec ctrl-C. Je sais que j'aurais dû faire un Ctrl-Z, puis remettre la tâche au premier plan ... mais ce n'est pas l'histoire.
Puis-je reprendre à partir du moment où j'ai arrêté la tâche?
Y a-t-il un fichier tar incomplet à l'emplacement de destination?
Karthik T
Oui, il y a un goudron incomplet.
mthpvg
Réponses:
11
Cette méthode recréera votre archive tar et ajoutera la pièce finie au fichier existant. Cela peut être utile si vous effectuez une sauvegarde via une connexion réseau. Vous obtiendrez probablement une archive corrompue si l'une des données de vos INFILES a changé. Assurez-vous de tester vos archives une fois terminé.
Remplacez INFILES et OUTFILE par les noms corrects sur la ligne suivante.
Je suppose que c'est plus rapide que de simplement redémarrer le processus tar parce que ce n'est vraiment rien écrire sur le disque?
Tyler
2
La meilleure solution serait de supprimer le fichier tar et de redémarrer le processus avant nohupet après &. Alternativement, vous pouvez l'exécuter tar -tfvet l'utiliser comme exclusion pour le nouveau tar -cvf.
tar -cvfécrasera le fichier existant. Vous vouliez dire tar -rvf? De plus, le dernier fichier écrit dans l'archive était probablement incomplet.
Gilles 'SO- arrête d'être méchant'
L'idée est donc de faire une liste des fichiers qui sont déjà dans l'archive tar, moins le dernier qui est probablement incomplet. Et puis lancez un tar -rvf?
Ce que je fais dans le cas, que j'ai une tararchive incomplète , je crée une liste des fichiers dans l'archive:
tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done
La sedcommande supprime toutes ces lignes, qui ont une barre oblique: Ce sont des répertoires, pas des fichiers, et nous voulons à nouveau vider les répertoires et ne sauter que ces fichiers dans ces répertoires, que nous avons déjà dans la première archive tar. De plus, nous laissons sedsupprimer le dernier nom de fichier, car celui-ci n'a probablement été sauvegardé que partiellement, nous allons donc l'archiver à nouveau.
Passez ensuite la files-doneliste via l'option -X à une nouvelle tarcommande:
tar cfvX archive2.tar files-done SOURCEDIR
Assurez-vous d'utiliser un nom de fichier de sortie différent dans la nouvelle commande tar, sinon vous écraserez votre archive partielle. N'essayez pas d'ajouter directement à l'archive tar corrompue.
Réponses:
Cette méthode recréera votre archive tar et ajoutera la pièce finie au fichier existant. Cela peut être utile si vous effectuez une sauvegarde via une connexion réseau. Vous obtiendrez probablement une archive corrompue si l'une des données de vos INFILES a changé. Assurez-vous de tester vos archives une fois terminé.
Remplacez INFILES et OUTFILE par les noms corrects sur la ligne suivante.
Explication:
SIZE="$(wc -c < $OUTFILE)"
# Récupère la taille actuelle de l'archive.tar -cz --to-stdout "$INFILES" |
# Commencez à créer une archive et envoyez la sortie à latail
commande.tail -c +$(($SIZE+1)) >>
# Ignorez les données avant $ SIZE + 1 et reprenez le reste de l'archive $ OUTFILE.la source
La meilleure solution serait de supprimer le fichier tar et de redémarrer le processus avant
nohup
et après&
. Alternativement, vous pouvez l'exécutertar -tfv
et l'utiliser comme exclusion pour le nouveautar -cvf
.la source
tar -cvf
écrasera le fichier existant. Vous vouliez diretar -rvf
? De plus, le dernier fichier écrit dans l'archive était probablement incomplet.tar -rvf
?Tu ne peux pas; il vous suffit de recommencer.
la source
Ce que je fais dans le cas, que j'ai une
tar
archive incomplète , je crée une liste des fichiers dans l'archive:La
sed
commande supprime toutes ces lignes, qui ont une barre oblique: Ce sont des répertoires, pas des fichiers, et nous voulons à nouveau vider les répertoires et ne sauter que ces fichiers dans ces répertoires, que nous avons déjà dans la première archive tar. De plus, nous laissonssed
supprimer le dernier nom de fichier, car celui-ci n'a probablement été sauvegardé que partiellement, nous allons donc l'archiver à nouveau.Passez ensuite la
files-done
liste via l'option -X à une nouvelletar
commande:Assurez-vous d'utiliser un nom de fichier de sortie différent dans la nouvelle commande tar, sinon vous écraserez votre archive partielle. N'essayez pas d'ajouter directement à l'archive tar corrompue.
la source