Что вам нужно, так это опция --inplace
.
Я настоятельно советую вам прочитать соответствующую часть руководства по rsync и понять, что подразумевается под этой опцией:
--inplace Этот параметр изменяет способ, которым rsync передает файл, когда его данные должны быть обновлены: вместо метода по умолчанию создания новой копии файла и перемещения его на место по завершении, rsync вместо этого записывает обновленные данные непосредственно в файл назначения.
Это имеет несколько эффектов:
- Жесткие ссылки не битые. Это означает, что новые данные будут видны через другие жесткие ссылки на файл назначения. Более того, попытки скопировать разные исходные файлы в файл с несколькими ссылками назначения приведут к "перетягиванию каната" с изменением данных назначения вперед и назад.
- Используемые двоичные файлы не могут быть обновлены (либо ОС не допустит этого, либо двоичные файлы, которые пытаются обменять свои данные, будут плохо себя вести или аварийно завершаться).
- Данные файла будут в несогласованном состоянии во время передачи и будут оставлены таким образом, если передача будет прервана или если обновление не удастся.
- Файл, в который rsync не может записать, не может быть обновлен. В то время как суперпользователь может обновить любой файл, обычному пользователю необходимо предоставить разрешение на запись для открытия файла для успешной записи.
- Эффективность алгоритма дельта-передачи rsync может быть снижена, если некоторые данные в целевом файле будут перезаписаны, прежде чем их можно будет скопировать в позицию позже в файле. Это не применяется, если вы используете --backup, так как rsync достаточно умен, чтобы использовать файл резервной копии в качестве базового файла для передачи.
ВНИМАНИЕ: вы не должны использовать эту опцию для обновления файлов, к которым обращаются другие, поэтому будьте осторожны при выборе использования этого для копии.
Этот параметр полезен для передачи больших файлов с изменениями на основе блоков или добавленных данных, а также в системах, которые связаны с диском, а не с сетью. Это также может помочь избежать отклонения снимка файловой системы при копировании от записи всего содержимого файла, в котором есть только незначительные изменения.
Опция подразумевает --partial (поскольку прерванная передача не удаляет файл), но конфликтует с --partial-dir и --delay-updates. До rsync 2.6.4 --inplace также был несовместим с --compare-dest и --link-dest.
Вы также можете быть заинтересованы в параметрах --append
или --append-verify
только для растущих файлов.