Я хотел бы сделать точную копию каталога (который содержит подкаталоги, файлы и символические ссылки), за исключением того, что я хочу, чтобы каждый файл в целевом каталоге был символической ссылкой на исходный файл.
Это я уже могу сделать, используя:
cp -sR /home/me/SourceDir TargetDir
Тем не менее, я хотел бы, чтобы любые относительные символические ссылки в SourceDir, которые указывают где-то еще в SourceDir, оставались такими же относительными ссылками, следовательно, теперь они указывают на TargetDir.
Например, скажем, SourceDir содержит следующее:
File0
Dir1/File1
Dir1/File2
Dir2/File3
Dir2/File2 <-- this is a symlink to ../Dir1/File2
Тогда я бы хотел, чтобы TargetDir выглядел так:
File0 <-- symlink to ../SourceDir/File0
Dir1/File1 <-- symlink to ../../SourceDir/Dir1/File1
Dir1/File2 <-- symlink to ../../SourceDir/Dir1/File2
Dir2/File3 <-- symlink to ../../SourceDir/Dir2/File3
Dir2/File2 <-- this is still a symlink to ../Dir1/File2, so: TargetDir/Dir1/File2
Я не возражал бы, если бы это нужно было выполнить за два или три шага (что-то, что я мог бы написать в простом сценарии оболочки).
Одна мысль, которая у меня возникла, - сначала скопировать только все символические ссылки, а затем выполнить cp -sR без использования clobber.