하드링크를 일반 파일로 변환하는 방법은 무엇입니까? [복사]

하드링크를 일반 파일로 변환하는 방법은 무엇입니까? [복사]

각 파일이 하드 링크라는 것을 알고 있습니다. 의미는 다음과 같습니다. 하나의 inode에 여러 개의 파일이 이를 가리키는 경우 각 파일이 동일한 내용을 가진 별도의 inode를 가리키도록 해당 inode를 어떻게 복제합니까?

예를 들어:

echo "Example" > one
ln one two

inode를 공유하지 않고 파일의 two내용을 동일 하게 만들려면 어떻게 해야 합니까? one원한다면 파일을 "복제"하고 싶습니다.

답변1

이는 다음 명령으로 달성할 수 있습니다.

find -samefile filename -exec sed -i ';;' {} \;

또는 이제 파일의 inode 번호를 알고 있는 경우

find -inum inode -exec sed -i ';;' {} \;

이 두 명령은 현재 작업 디렉터리의 하위 디렉터리에서 일치하는 inode가 있는 파일만 찾습니다. 파일 시스템의 모든 파일을 검색해야 하는 경우 루트 디렉터리에서 이 명령을 실행해야 합니다.

첫 번째 부분은 find -samefile filename동일한 inode를 공유하는 모든 파일을 찾습니다. 그런 다음 sed -i ';;'동일한 이름을 가진 파일에 파일 복사를 수행합니다 ( ';;'대신 sed 스크립트를 사용하고 있습니다 ';'. 그렇지 않으면 인수가 명령의 끝으로 find해석됩니다 ).;-exec

관련 정보