우선 폴더의 하드링크를 생성할 수 없다는 것을 알고 있습니다.
대상에 후속 폴더 트리를 자동으로(그리고 재귀적으로) 생성한 다음 소스에서 대상으로 모든 파일을 자동으로 하드링크할 수 있는 명령(Linux)이 있는지 궁금합니다.
답변1
"그런 다음 모든 파일을 원본에서 대상으로 자동으로 하드링크"한다는 것이 무슨 뜻인지 잘 모르겠습니다. 그리고 당신은 명시적으로 재귀를 원합니다.
두 위치를 "동기화" 상태로 유지하려는 경우, 예를 들어 파일 제거 또는 생성이 두 위치 모두에서 동시에 관찰되어야 하는 경우 바인드 마운트(이 다른 답변) 좋습니다. 솔루션은 파일 시스템에 흔적을 남기지 않습니다. 하드링크를 생성하면 파일 시스템에 생성됩니다. 디스크를 이동하고 파일 시스템을 다른 OS에 마운트하면 하드링크가 그대로 유지됩니다. 재부팅해도 하드링크가 그대로 남아 있습니다. 바인드 마운트는 OS 수준에 있습니다. 뿐만 아니라 디스크를 이동하고 마운트한 후 다른 OS에 별도로 마운트를 바인딩하도록 명령해야 할 수도 있습니다. 디스크를 이동하지 않는 경우에도 현재 OS에 바인드 마운트를 지시해야 합니다.다시재부팅 후(영구적인 해결 방법을 원하는 경우)
디렉토리에 대한 심볼릭 링크는 다소 유사하며 파일 시스템에 존재합니다.
ln -s /original /other
심볼릭 링크와 해당 대상이 동일한 파일 시스템에 속하고 심볼릭 링크가상대적인, 그러면 파일 시스템이 다른 곳에 마운트되어도 작동합니다(다른 마운트 지점, 다른 OS일 수 있음). 심볼릭 링크가 원하는 것이 아닐 수도 있는 이유가 있습니다(예).
바인드 마운팅 또는 심볼릭 링크는 실제로 재귀적이지 않습니다. 그것은하나의두 경로를 "연결"하는 행위입니다. 더 깊은 경로에는 아무런 영향을 미치지 않습니다. 그들의 (반)동등성은 각각의 ((((…)great-)great-)grand)부모 "디렉토리" 사이에 일종의 링크가 있기 때문에 발생합니다.
이제 "모든 파일을 원본에서 대상으로 자동으로 하드링크"한다는 것은 "이 작업을 자동으로 단 한 번만 수행"한다는 뜻이라면 다음을 사용하여 이 작업을 수행할 수 있습니다 cp
.
cp -lR /original /other
( -l
POSIX에서는 필요하지 않습니다). 비슷 cp -R
하지만 하드링크가 있습니다. 이것은 정말 재귀적입니다. 그러나 그것은 또한 일회성 조치이기도 합니다. 디렉토리 하위 트리는 분리되어 있으며 일반 파일만 하드링크되어 나타납니다. 파일 생성 또는 삭제는 미러링되지 않습니다.하드링크를 깨는 작업하드링크가 깨집니다.
답변2
혹시바인드 마운트더 나은 솔루션이 될까요? 그것은 정확히 당신이 원하는 것을 수행합니다. 즉, 모든 파일이 두 개의 다른 경로에서 반복적으로 동일하도록 하는 것입니다.
이 명령은 /other
기존 마운트 또는 디렉터리와 동일한 내용을 갖게 합니다 /original
.
mount --bind /original /other
두 경로가 이제 동일한 마운트에 대한 포인터이기 때문에 두 경로 중 하나에서 변경한 내용이 /original
다른 경로에 즉시 나타납니다./other