Может ли rsync копировать каталоги по ссылкам

Да, потому что именно так это делается в UNIX.

Системный вызов «запустить приложение» отсутствует; это всегда выполняется парами fork / exec.

Между прочим, exec не генерирует новый PID. exec заменяет содержимое процесса - память удаляется и загружается совершенно новый исполняемый файл, но состояние ядра остается прежним (открытые файлы, переменные среды, рабочий каталог, пользователь и т. д.), а PID остается прежним.


Дальнейшее чтение, если вам интересно:

  • vfork похож на fork , за исключением того, что он должен всегда сочетаться с exec , и полезно, когда fork не может работать, как в ucLinux.

  • clone - это новый fork (сегодняшняя функция fork использует clone за кулисами), но делает гораздо больше, включая создание новых процессов, которые совместно используют одну и ту же память (а не дублируют ее, как fork ), и мы вызываем эти потоки.

0
03.05.2018, 15:30
1 ответ

Это поведение rsyncпо умолчанию.

Пример

## Preamble
$ cd /tmp
$ mkdir src dst stuff
$ touch stuff/{a,b,c}
$ ( cd src && ln -s /tmp/stuff dir1 )
$ ( cd dst && ln -s /tmp/stuff dir1 )

## Symlinks are retained
$ cd /tmp
$ rsync -avv src/ dst/

## Change scenario
$ ls -l src
$ rm src/dir1 && cp -a /tmp/stuff src/dir1

## Symlinks are replaced according to the source
$ cd /tmp
$ rsync -avv src/ dst/
$ ls -l dst
0
28.01.2020, 04:23

Теги

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