У меня есть ежедневный скрипт rsync, который создает резервные копии моих данных на внешнем жестком диске в /mnt/X
(корневой каталог жесткого диска). Я использую --link-dest
жесткие ссылки и избегаю дублирования данных. Мне нужно переместить все мои ежедневные резервные копии из /mnt/X
в /mnt/X/backups
без потери жестких ссылок. Позже мне нужно будет изменить скрипт для резервного копирования в новом каталоге назначения, который находится /mnt/X/backups
и искать резервную копию предыдущего дня в том же каталоге.
Как бы вы мне посоветовали осуществить переезд?
решение1
Вам не нужно делать ничего особенного. Просто,
mv /mnt/X/* to /mnt/X/backups/
(Вы получите сообщение об ошибке, что невозможно перейти backups
к самому себе).
Жесткая ссылка — это, по сути, номер инода. Файлы, которые жестко связаны, имеют одинаковый номер инода. Как бы вы их ни перемещали в пределах одной файловой системы, номер инода не меняется. Поэтому никаких специальных действий не требуется.
Попробуйте сами сначала с несколькими простыми файлами /tmp
:
/tmp $ mkdir aa
/tmp $ touch aa/f
/tmp $ ln aa/f aa/g
/tmp $ mkdir aa/new
/tmp $ mv aa/* aa/new
mv: cannot move 'aa/new' to a subdirectory of itself, 'aa/new/new'
/tmp $ ls -il aa/new/
13185910 -rw-r--r-- 2 0 Apr 11 13:32 f
13185910 -rw-r--r-- 2 0 Apr 11 13:32 g