Когда вы перемещаете файл в той же файловой системе, mv
отсоединяет файл от его старого местоположения и присоединяет его к новому местоположению; метаданные, такие как разрешения, остаются прежними. Когда вы перемещаете файл в другую файловую систему, mv
копируете файл, пытаетесь скопировать как можно больше метаданных и удаляете оригинал.
Поскольку вы переходите на другую файловую систему и не хотите копировать много метаданных, вы также можете скопировать файл, а затем удалить оригинал.
cp "$backupfile" "$destination" && rm "$backupfile"
Это до некоторой степени сохраняет права доступа к файлу (например, удобочитаемость, исполняемость). Время модификации файла не сохраняется. С GNUcp
вы можете использовать --preserve=…
опцию, чтобы контролировать, какие метаданные реплицируются более точно, например --preserve=mode,timestamps
.
Вы также можете использовать rsync
и сказать, что вы хотите сохранить. Опция -a
означает «сохранить большинство метаданных», которая включает владельца, если он работает только от имени пользователя root.
rsync -a --no-owner --no-group --remove-source-files "$backupfile" "$destination"