자체 로컬 데이터를 사용하여 다른 디렉터리에 기호 복사본을 만듭니다.

자체 로컬 데이터를 사용하여 다른 디렉터리에 기호 복사본을 만듭니다.

foo파일과 디렉터리가 포함된 디렉터리가 있습니다. foo_0311동일한 파일을 포함하고 파일이 변경되면 업데이트를 확인하는 새 디렉토리 foo를 생성하고 touch foo_0311/a.txt.a.txtfoo

예전에는 이 작업을 수행할 수 있는 방법이 있었지만 bash 기록이 사라지고 다시 빌드할 수 없게 되면서 손실되었습니다. 다음과 같이 먼저 만들고 foo_0311사용하는 과정 이 포함되었던 것으로 기억합니다 ln.

mkdir foo_0311
ln ???

하지만 옵션이 기억나지 않습니다. IIRC, cd이 작업을 수행하고 를 발행한 후 디렉토리로 이동 ls -l하면 파일이 링크로 표시되지 않지만 변경 사항은 원래 디렉토리 foo에 반영되고 .foo_0311foo

답변1

cp소위 링크 트리가 생성되도록 요청할 수 있습니다 .

cp -al foo foo_0311

-a모든 것을 재귀적으로 복사하고 -l파일을 복사하는 대신 파일에 대한 하드 링크를 만듭니다.

이미 존재 하는 경우 foo_0311사용해야 합니다.

cp -al foo/* foo_0311

대신에.

이렇게 하면 심볼릭 링크 대신 하드 링크가 생성되므로 ->출력 에 표시되지 않습니다 ls -l(그러나 2두 번째 열의 덕분에 찾을 수 있습니다). 두 디렉터리 중 하나에서 만든 새 파일은 다른 디렉터리에 표시되지 않지만 한 디렉터리에서 편집한 파일은 다른 디렉터리에 표시됩니다.을 텐데실제로는 그 자리에서 수정됩니다. (Emacs와 같은 편집자는 새 파일을 생성하고 이를 제자리로 이동하여 이를 깨뜨립니다. 그러나 실제로는 쓰기 중 복사(copy-on-write) 형식을 허용하므로 트리를 연결하는 데 매우 유용합니다...)

답변2

내가 보기에 - 당신은 일부 디렉토리를 생성한 다음 해당 디렉토리에 대한 심볼릭 링크를 생성하려고 합니다. 마치 Windows 시스템에 기본 프로그램이 있고 "프로그램 파일"(일명... .. 심볼릭 링크)에 아이콘이 있는 것과 같습니다. *nix 세계에서). 이를 달성하려면 다음을 수행하면 됩니다.

=>> mkdir  -p ~/home/folder/        "will make the directory for you if it doesn't exist"

=>> touch     ~/home/folder/file.txt  "will create the file"

이제 파일에 대한 심볼릭 링크를 만듭니다.

ln -sf ~/home/folder/file.txt      ~/home/folder2/file.txt 

심볼릭 링크가 생성된 위치에 따라 sudo를 사용하여 실행해야 할 수도 있습니다. ln에 대한 매뉴얼 페이지를 확인할 수도 있습니다.매뉴얼 페이지....끝났습니다.

관련 정보