Судя по справочной странице mount(2)
, я не думаю, что вы можете сделать это напрямую. Системный вызов не использует путь, который использовался бы для рассмотрения поддерева смонтированной файловой системы. Есть только исходное устройство, целевой путь, тип файловой системы, флаги монтирования (, общие параметры, такие как ro
и nosuid
), и непрозрачное поле data
, которое интерпретируется самой файловой системой (файловой системой -. ] специальные опции ).
Кажется, вам нужно смонтировать устройство по временному пути, затем смонтировать нужное поддерево и, наконец, размонтировать первую файловую систему. Помимо размонтирования, вы можете сделать это из fstab. Нечто подобное работало в Ubuntu (с systemd ):
.
# fstab
/dev/somedevice /tmpmnt ext4 auto,rw
/tmpmnt/var /var none auto,bind
Нет, rsync не обнаруживает, что файл был перемещен, только то, что файл был удален, а другой был создан.
Как уже сказал @wurtel, опция --fuzzy
может помочь оптимизировать копирование данных (не только для перемещенных файлов, но также и тогда, когда вокруг )есть файлы с похожим содержимым.
Если вы хотите, чтобы старый экземпляр файла был удален, вам потребуется один из вариантов --delete
.