6 votes

Sauvegarde externe - Erreur "cp: ne peut pas créer le fichier régulier"

J'ai toujours sauvegardé mon répertoire personnel sur un disque dur externe en utilisant la commande cp -r.

Jusqu'à récemment, cela fonctionnait bien, mais maintenant je reçois régulièrement le message d'erreur cp: impossible de créer le fichier régulier suivi de argument non valide ou cp: impossible de créer le lien symbolique suivi de opération non autorisée.

J'ai essayé sudo cp -r mais le problème persiste. Qu'est-ce que je fais de mal?

4voto

Mufaka Points 54

cp -rv devrait au moins vous dire sur quel fichier il bloque.

Le problème que vous rencontrez semble être que vous copiez un lien symbolique (c'est-à-dire un fichier qui pointe simplement vers un autre) vers un système de fichiers qui ne prend pas en charge les liens symboliques. Il existe trois options pour cela :

  • Transformez votre volume de sauvegarde en un système de fichiers qui accepte les liens symboliques (par exemple, reformatez-le de FAT ou NTFS en EXT3 ou EXT4). Cela peut être fastidieux selon la quantité de données que vous avez à manipuler pendant l'opération.

  • Ignorez simplement les liens symboliques et ne les copiez pas. Cela peut causer des problèmes si vous essayez de restaurer les données, car certains fichiers seront manquants.

  • Développez les liens symboliques pour qu'ils contiennent une copie des données réelles. Cela prendra plus d'espace.

La première option serait mon choix, mais si vous avez besoin du lecteur pour un autre système qui ne prend pas en charge les volumes EXTx, cela pose problème.

Que les deuxième et troisième options soient réalisables ou non, je recommande d'exécuter cp avec son drapeau verbose pour voir ce avec quoi vous travaillez. S'il s'agit d'un seul fichier, peut-être qu'une simple copie serait ok, s'il ne l'est pas, et s'il s'agit simplement d'un fichier d'assistance inutile, peut-être que l'omettre serait ok.

En tant que note supplémentaire, la plupart des gens semblent préférer utiliser rsync pour les sauvegardes. Il dispose d'un grand nombre d'options qui le rendent parfait pour le travail. Vous pouvez lire une version de sa page de manuel ici. Il propose plusieurs options (comme décrit ci-dessus) sur la façon de gérer les liens symboliques.

4voto

wyrm Points 185

Un conflit entre les noms de fichiers source et le système de fichiers de destination peut provoquer votre erreur cannot create regular file. Si vous copiez sur une clé USB, vous utilisez probablement le système de fichiers vfat ou fat32, qui est soumis aux restrictions habituelles de noms de fichiers Windows.

Pour observer ceci, essayez de créer un fichier nommé :, qui est un caractère réservé de Windows.

$ cp /dev/null /chemin/vers/dest/:
cp: cannot create regular file '/chemin/vers/dest/:': Invalid argument

Pour voir l'erreur Operation not permitted séparément, essayez de créer un lien symbolique sans copier.

$ ln -s somesillysymlink /chemin/vers/dest/symlink
ln: failed to create symbolic link '/chemin/vers/dest/symlink': Operation not permitted

Si vous voyez ces erreurs, c'est probablement la cause de votre problème.

Probablement l'approche la plus simple est de créer une archive qui est libre des restrictions de nommage que vous avez rencontrées, et qui préserve également les liens symboliques. Par défaut, tar et 7z préservent les liens symboliques. zip préserve les liens symboliques avec le drapeau approprié. Chacun de ces outils peut stocker des fichiers qui ont des caractères réservés de Windows dans leurs noms. Voir aussi “Comment puis-je zip/compresser un lien symbolique?

Remplacer le système de fichiers vfat par quelque chose de plus convivial pour Linux – comme ext4 – soulagerait votre problème, mais au prix d'une portabilité réduite. Presque tous les systèmes Linux pourraient monter le lecteur, mais d'autres systèmes courants nécessiteraient un travail supplémentaire. Voir “Créer une partition ext4 depuis la console” et la page de manuel de mke2fs pour des détails sur la création. Voir “Comment lire les partitions ext4 sur Windows?”, “Comment monter un système de fichiers ext4 sur OS X?”, et “Comment monter un système de fichiers Ext4 avec OS X Fuse” si vous avez besoin de déplacer ce lecteur vers d'autres systèmes d'exploitation.

1voto

Olli Points 8476

Consultez votre dmesg. Le problème habituel est soit un problème de système de fichiers, soit un disque dur défectueux (et donc un problème de système de fichiers).

Vous pouvez démonter le disque externe puis exécuter fsck. Par exemple

umount /dev/sdb1
fsck -f /dev/sdb1

0voto

cdmo Points 101

Je viens de rencontrer le même problème (en fait sur Cent OS via VirtualBox) et le problème était lié aux permissions. J'avais un répertoire partagé avec ma machine locale (un Mac sur OSX Mavericks), j'ai essayé un cp et ça a bloqué sur Protocol error. Sur ma machine locale, j'ai changé le propriétaire du répertoire pour l'utilisateur régulier (moi) (de root) et le groupe pour quelque chose de plus générique que wheel. Donc, il s'est avéré que c'était un problème de permissions de base.

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