LINUX.ORG.RU

mv не перемещает

 , ,


1

2

Нужно переместить огромный каталог из одного места в другое. mv вместо переноса начинает копировать, вероятно потом удалит, но каталог гигантский и на вторую копию места нет. Происходит всё в пределах одной файловой системы. Внутри каталога открытых файлов не видно. Пробовал схитрить и сделать ln -d, и потом удалить исходный, но operation not permitted. Кто виноват и что делать?

Works as intended.

Представь, что запись в TARGET не удалась, а SOURCE мы уже удалили.

$ info coreutils 'mv invocation' ...

It first uses some of the same code that's used by `cp -a'
to copy the requested directories and files, then (assuming the
copy succeeded) it removes the originals.

...

anonymous
()

Попробуй rsync с ключом --remove-source-files

anonymous
()

запусти move для каждого файла по отдельности

Jopich1
()

Пробовал схитрить и сделать ln -d, и потом удалить исходный, но operation not permitted.

Каталог и файлы в нём кому принадлежат? Может у тебя просто прав на них нет (только на чтение), поэтому скопировать можешь, а переместить нет. Обычно в пределах одной системы mv как раз просто «переименовывает» без создания копий и удаления потом.

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)

Попробуй создать такое же дерево каталогов в TARGET, а потом каждый файл перемещай отдельно.

joy4eg ★★★★★
()
Ответ на: комментарий от anonymous

Моё представление о том, как должен работать mv примерно такое:

moving a file is done is 3 steps:

add() a link to the file to the inode list of the destination folder
check if the link was successfully added
remove() the link from the list of inodes of source folder if the check above was a success.
this process is the same for a file or a folder.

syscall link is the add()
syscall unlink is the remove()
mv just uses those two commands above and adds a check in-between to prevent data loss.

Но в моём случае он работает совсем не так.

onestupidquestion
() автор топика
Ответ на: комментарий от justAmoment

Подозреваю, что тоже начнёт рекурсивно перемещать, но проверять не рискну.

onestupidquestion
() автор топика
Ответ на: комментарий от crutch_master

Пробовал схитрить и сделать ln -d, и потом удалить исходный, но operation not permitted

Как руту тогда ответили operation not permitted?

В линуксе не дают создавать жёсткие ссылки на каталоги.

h578b1bde ★☆
()
Ответ на: комментарий от crutch_master

Not permitted это на ln -d было. Пишут, что это фс не умеют хардлинки на каталоги. Я тестировал на файлах из target в destination, линковалось нормально. А каталоги нет.

onestupidquestion
() автор топика
Ответ на: комментарий от anonymous

works as intended

Да помилуйте. Возможно, вы не заметили, что дело происходит в пределах одной ФС?

Zmicier ★★★★★
()

А можно встречный вопрос, он всегда меня в таких случаях интересует: почему вы вместо того, чтобы показать что там у вас происходит, все *пересказываете*? Мы вроде бы не по телефону говорим, а значит первое было бы проще не только собеседнику, но и вам.

Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.