![하드링크를 일반 파일로 변환하는 방법은 무엇입니까? [복사]](https://linux55.com/image/95298/%ED%95%98%EB%93%9C%EB%A7%81%ED%81%AC%EB%A5%BC%20%EC%9D%BC%EB%B0%98%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
각 파일이 하드 링크라는 것을 알고 있습니다. 의미는 다음과 같습니다. 하나의 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