나는 모든 파일이 하드 링크라는 것을 알고 있습니다. 이것이 바로 내가 의미하는 바입니다. 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
).