1 votes

Impossible de supprimer un fichier sous Linux

Après avoir sauvegardé avec 'rsync --archive --update' mon répertoire personnel de ext4 à btrfs, rsync rapporte des erreurs comme celle-ci :

rsync: readdir("/mnt/backup/home/me/.mozilla/firefox/qbdcaxwe.default/sessions/????????? ??????"): Not a directory (20)                
rsync: rename "/mnt/backup/home/me/.mutt/cache/bodies/imaps:myemail@imap.gmail.com/INBOX/.3-13228.NMKGEN" ->                           
+"home/me/.mutt/cache/bodies/imaps:myemaill@imap.gmail.com/INBOX/3-13228": Not a directory (20) 

Lorsque j'essaie de supprimer ces éléments avec 'rm', un message d'erreur s'affiche, indiquant que cet élément est un répertoire. Mais 'rm -d' échoue avec un message "cannot remove ... : No such file or directory.". Les commandes 'btrfs check' et 'btrfs scrub' n'ont trouvé aucune erreur de système de fichiers.

Voici les résultats des commandes 'file', 'rm' et 'rmdir' :

$ file /.../.mutt/cache/bodies/imaps:myemail@imap.gmail.com/INBOX/.3-13228.NMKGEN
/.../.mutt/cache/bodies/imaps:myemail@imap.gmail.com/INBOX/.3-13228.NMKGEN: SMTP mail, Non-ISO extended-ASCII text, with very long lines
$ rm /.../.mutt/cache/bodies/imaps:myemail@imap.gmail.com/INBOX/.3-13228.NMKGEN
rm: remove regular file ‘/.../.mutt/cache/bodies/imaps:myemail@imap.gmail.com/INBOX/.3-13228.NMKGEN’? y
rm: cannot remove ‘/.../.mutt/cache/bodies/imaps:myemail@imap.gmail.com/INBOX/.3-13228.NMKGEN’: Not a directory
$ rmdir /.../.mutt/cache/bodies/imaps:myemail@imap.gmail.com/INBOX/.3-13228.NMKGEN
rmdir: failed to remove ‘/.../.mutt/cache/bodies/imaps:myemail@imap.gmail.com/INBOX/.3-13228.NMKGEN’: Not a directory

Comment supprimer ces éléments du système de fichiers ?

1voto

hyardbird Points 21

La sauvegarde du répertoire personnel d'un utilisateur peut poser des problèmes si elle est exécutée par l'utilisateur alors que des applications sont en cours d'exécution, car les applications peuvent maintenir des fichiers ouverts et/ou ajouter/supprimer des fichiers et des répertoires et interférer avec le processus de sauvegarde.

Le mieux (si possible) est de créer la sauvegarde en tant que root pendant que l'utilisateur est déconnecté.

Vous pouvez également essayer de minimiser le nombre d'applications que vous exécutez pendant la sauvegarde (quittez l'interface graphique et exécutez la commande rsync cmd à partir d'un terminal de ligne de commande).

Enfin, certaines applications utilisent des caractères spéciaux dans leurs noms de fichiers et de répertoires, ce qui peut perturber certains utilitaires. Pour ces derniers, vous devez garder la trace des occurrences (le mieux est de rediriger la sortie vers un fichier) et les gérer manuellement, en utilisant des solutions alternatives (échappement des caractères, utilisation de la fonction TAB pour compléter automatiquement les noms de fichiers/répertoires ou même d'autres utilitaires de copie) selon les besoins.

0voto

Alex B Points 973

Si vous utilisez btrfs, pourquoi ne pas profiter de ses fonctionnalités ?

prendre un instantané :

sudo btrfs sub snap /home/me /home/me/.$(date +%Y-%m-%d_%H%M%S)_snapshot

rsync l'ancienne sauvegarde dans le snapshot plutôt que les données réelles :

rsync --archive --update /mnt/backup/home/me/ /home/me/$(sudo btrfs subvolume list -c /home/me|tail -n1|awk '{print $NF}')/

(J'utilise principalement rsync -mauvPAX from/ to/ # mais vous pourriez ne pas avoir besoin de tout cela).

Maintenant que vous avez btrfs, vous pouvez sauvegarder l'instantané plutôt que les données réelles, ce qui devrait permettre d'éviter ce problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X