Проблема в том, что я хочу видеть ошибки при перемещении файла, но не вижу ошибки с проблемой разрешений. Другими словами - мне важно, если файл передан не полностью, но я не хочу видеть ошибки, подобные этой:
mv: не удалось сохранить владение для `/home/blah/backup/pgsql.tar.gz ': операция не разрешена
Так что я хочу что - то вроде: mv $backupfile $destination --ignore-permissions
.
Файл резервной копии может быть от 1 до 5 ГиБ и передается через NFS.
cifs
).Ответы:
mv
это неправильный инструмент для этой работы; хочешьcp
а потомrm
. Поскольку вы перемещаете файл в другую файловую систему, это в точности то, чтоmv
происходит за кулисами, за исключением того, чтоmv
оно также пытается сохранить биты прав доступа к файлу и информацию о владельце / группе. Это потому,mv
что сохранит эту информацию, если он перемещает файл в одной и той же файловой системе иmv
попытается вести себя одинаково в обеих ситуациях. Так как вам не нужно сохранять биты прав доступа к файлам и информацию о владельце / группе, не используйте этот инструмент. Используйтеcp --no-preserve=mode
иrm
вместо.источник
cp --no-preserve=mode,ownership $backupfile $destination
проверить код выхода и затем сделать,rm $backupfile
если все в порядке.Когда вы перемещаете файл в той же файловой системе,
mv
отсоединяет файл от его старого местоположения и присоединяет его к новому местоположению; метаданные, такие как разрешения, остаются прежними. Когда вы перемещаете файл в другую файловую систему,mv
копируете файл, пытаетесь скопировать как можно больше метаданных и удаляете оригинал.Поскольку вы переходите на другую файловую систему и не хотите копировать много метаданных, вы также можете скопировать файл, а затем удалить оригинал.
Это до некоторой степени сохраняет права доступа к файлу (например, удобочитаемость, исполняемость). Время модификации файла не сохраняется. С GNU
cp
вы можете использовать--preserve=…
опцию, чтобы контролировать, какие метаданные реплицируются более точно, например--preserve=mode,timestamps
.Вы также можете использовать
rsync
и сказать, что вы хотите сохранить. Опция-a
означает «сохранить большинство метаданных», которая включает владельца, если он работает только от имени пользователя root.источник
rsync
Решение работает отлично. Я изо всех сил пытался перенести мою старую версию Ubuntu с общего ресурса CIFS. Мой rsync не сообщал о сбое при перемещении файла, но не перемещал его и только сообщал о проблемах с разрешениями.rsync
решение!