Mv удаление файлов в конце, а не один за другим

298
Paperino

Я рекурсивно перемещаю папку между двумя файловыми системами, используя mv -v. Кажется, что удаление происходит в конце (чтобы сделать mv транзакционным ?). У меня недостаточно места для хранения двух копий одной и той же папки, есть ли способ заставить mv удалить файл, как только это будет сделано?

0
`mv` должен выделять дополнительное дисковое пространство, только если он перемещается в другой раздел. в противном случае он просто обновляет inode, чтобы указать новое местоположение в разделе, и ничего не копирует и не удаляет. однако, если вы копируете в новый раздел, мне непонятно, почему вы не можете сэкономить место на диске, так как на обоих разделах должно быть достаточно места для хранения всего каталога (или это целое предложение никогда не будет работать, потому что место назначения слишком мало ). Frank Thomas 6 лет назад 0
Очевидно, mv не делает ничего рекурсивно. Это переместит каждую папку верхнего уровня. Это достаточно хорошо для меня, так или иначе, контент равномерно распределяется между папками верхнего уровня, и у меня достаточно места для 2 копий каждой из них. PS Мой случай был связан с двумя файловыми системами ZFS в одном пуле. С точки зрения mv, они разные, с точки зрения хранилища. Я не знаю, имеет ли это смысл. Paperino 6 лет назад 0
ааа, это имеет смысл. агрегации на нескольких дисках действительно запутывают дело. к сожалению, mv не будет работать для вас сам по себе, поэтому, возможно, посмотрите на альтернативы, такие как сценарий оболочки, чтобы перечислить подкаталоги и обрабатывать их индивидуально (копировать, удалять, полоскать, повторять), или, возможно, что-то вроде rsync может работать лучше для вас , Frank Thomas 6 лет назад 0

1 ответ на вопрос

1
Frank Thomas

Нет, на страницах руководства для пользователя mvне указаны какие-либо переключатели, которые изменяют поведение команды так, как вы ее описали. Вам придется изучить другие команды или алгоритмы.

название

mv - перемещать (переименовывать) файлы

mv [ОПЦИЯ] ... [-T] ИСТОЧНИК DEST

mv [ОПЦИЯ] ... ИСТОЧНИК ... КАТАЛОГ

mv [ОПЦИЯ] ... -Т ИСТОЧНИК КАТАЛОГА ...

Описание

Переименуйте SOURCE в DEST или переместите SOURCE (s) в DIRECTORY.

Обязательные аргументы для длинных опций обязательны и для коротких опций.

--backup [= CONTROL]

make a backup of each existing destination file 

-b

like --backup but does not accept an argument 

-f, --force

do not prompt before overwriting 

-и, --интерактивный

prompt before overwrite 

-n, --no-clobber

do not overwrite an existing file 

Если вы укажете более одного из -i, -f, -n, вступит в силу только последний.

--strip-хвостовых-косой черты

remove any trailing slashes from each SOURCE argument 

-S, --suffix = SUFFIX

override the usual backup suffix 

-t, --target-directory = DIRECTORY

move all SOURCE arguments into DIRECTORY 

-T, --no-target-directory

treat DEST as a normal file 

-у, - обновить

move only when the SOURCE file is newer than the destination file or when the destination file is missing 

-v, --verbose

explain what is being done 

--Помогите

display this help and exit 

--версия

output version information and exit 

Суффиксом резервной копии является '~', если он не установлен с помощью --suffix или SIMPLE_BACKUP_SUFFIX. Метод управления версиями можно выбрать с помощью параметра --backup или переменной среды VERSION_CONTROL. Вот значения:

нет, выкл

never make backups (even if --backup is given) 

пронумерованы, т

make numbered backups 

существующий, ноль

numbered if numbered backups exist, simple otherwise 

просто, никогда

always make simple backups 

Источник: https://linux.die.net/man/1/mv

Похожие вопросы