Le problème est que je veux être capable de voir les erreurs lors du déplacement d'un fichier, mais pas de voir les erreurs avec un problème d'autorisations. En d'autres termes - je me soucie de savoir si le fichier n'est pas entièrement transmis, mais je ne veux pas voir d'erreurs comme celle-ci:
mv: échec de la conservation de la propriété pour `/home/blah/backup/pgsql.tar.gz ': opération non autorisée
Donc , je veux quelque chose comme: mv $backupfile $destination --ignore-permissions
.
Le fichier de sauvegarde peut être compris entre 1 Mo et 5 Go et est transféré via NFS.
cifs
).Réponses:
mv
est le mauvais outil pour ce travail; vous voulezcp
et alorsrm
. Puisque vous déplacez le fichier vers un autre système de fichiers, c'est exactement ce quimv
se passe dans les coulisses, sauf que vousmv
essayez également de préserver les bits d'autorisation de fichier et les informations de propriétaire / groupe. En effetmv
, ces informations seraient conservées si le fichier était déplacé dans le même système de fichiers etmv
essayait de se comporter de la même manière dans les deux situations. Puisque vous ne vous souciez pas de la préservation des bits d'autorisation de fichier et des informations de propriétaire / groupe, n'utilisez pas cet outil. Utilisezcp --no-preserve=mode
et à larm
place.la source
cp --no-preserve=mode,ownership $backupfile $destination
, vérifiez le code de sortie, puis procédezrm $backupfile
si tout va bien.Lorsque vous déplacez un fichier dans le même système de fichiers,
mv
détachez le fichier de son ancien emplacement et attachez-le à son nouvel emplacement. les métadonnées telles que les autorisations restent les mêmes. Lorsque vous déplacez un fichier vers un autre système de fichiers, lemv
copie, tente de répliquer autant de métadonnées que possible et supprime l'original.Puisque vous passez à un autre système de fichiers et que vous ne souhaitez pas répliquer beaucoup de métadonnées, vous pouvez également copier le fichier, puis supprimer le fichier original.
Cela préserve les autorisations du fichier dans une certaine mesure (par exemple, lisibilité mondiale, exécutabilité). L'heure de modification du fichier n'est pas conservée. Avec GNU
cp
, vous pouvez utiliser l’--preserve=…
option pour contrôler quelles métadonnées sont répliquées plus finement, par exemple--preserve=mode,timestamps
.Vous pouvez également utiliser
rsync
et dire ce que vous voulez préserver. L'option-a
signifie «conserver la plupart des métadonnées», ce qui inclut le propriétaire si elle est exécutée en tant que root uniquement.la source
rsync
solution fonctionne à merveille. J'avais eu du mal à transférer mon ancienne installation Ubuntu hors du partage CIFS. Mon rsync n'a pas signalé d'échec du déplacement du fichier, il ne l'a pas déplacé et signale uniquement des problèmes d'autorisations.rsync
solution!