Как я могу скопировать файлы, создав символические ссылки?
Я хочу пройти через файловую систему и скопировать ее части в другую файловую систему, создавая символические ссылки вместо того, чтобы что-то копировать.
rsync
было бы идеально, если бы у него было что-то вроде --local-copy-via-symlink
вариант, потому что rsync
Фильтры включения / исключения - лучший способ указать, что я хочу скопировать.
Я знаю, что могу сделать это с помощью скрипта, но есть ли умная команда, которая делает это уже?
1 ответ
- Символьная ссылка не является копией файла, ссылка является указателем на другой файл.
- Изменение данных с использованием имени файла или имени ссылки не приводит к появлению двух разных файлов, что было бы в случае с реальной копией.
- Удаление оригинала не сохраняет (копию) данных в месте расположения символической ссылки, вместо этого вы получаете то, что называется сломанной символической ссылкой, что указывает на местоположение файла, которого больше не существует.
Проще говоря, ничего "умного" делать нельзя.
РЕДАКТИРОВАТЬ
Вместо того, чтобы создавать символические ссылки, в Linux есть концепция "связывания". Начиная с Linux 2.4.0 можно перемонтировать часть файловой иерархии куда-то еще. Вызов:
mount --bind olddir newdir
или запись в fstab:
/olddir /newdir none bind
После этого вызова одно и то же содержимое доступно в двух местах. Это сохраняет все существующие разрешения. но у вас нет и символических ссылок.