바인드 마운트에서 제공하는 파일이 "mv"를 통한 덮어쓰기를 지원할 수 있습니까?

바인드 마운트에서 제공하는 파일이 "mv"를 통한 덮어쓰기를 지원할 수 있습니까?

a파일 위에 파일 바인딩을 설치한다고 가정해 보겠습니다 b.

$ echo 'line 1' > a
$ touch b
$ mount --bind a b

초기 파일 내용은 예상대로 두 경로 모두에 미러링됩니다.

$ cat a
line 1

$ cat b
line 1

두 경로 중 하나에 연결하면 새 콘텐츠가 예상대로 양방향으로 미러링됩니다.

$ echo 'line 2' >> a

$ cat a
line 1
line 2

$ cat b
line 1
line 2

$ echo 'line 3' >> b

$ cat a
line 1
line 2
line 3

$ cat b
line 1
line 2
line 3

그러나 다음 b을 통해 이를 재정의 할 수는 없습니다 mv.

$ echo 'totally new contents' > temp
$ mv tmp b
mv: can't rename 'tmp': Device or resource busy

새로운 콘텐츠가 미러링되도록 작동시키는 방법이 있습니까 a?


내가 이 작업을 수행하려는 이유는 내 시스템의 파일 시스템이 설정되는 방식과 관련이 있습니다.

임베디드 시스템이므로 대부분의 파일 시스템이 읽기 전용으로 마운트됩니다. 일부 타사 서비스는 또는 같은 하드코딩된 파일에 쓰기를 시도 /etc/machine-info하지만 /etc/hostname읽기 전용이므로 작동하지 않습니다. 이 문제를 해결하는 일반적인 방법은 수정하려는 파일만 포함하는 쓰기 가능한 파티션을 만든 다음 해당 쓰기 가능한 파일을 서비스가 찾을 수 있는 기존 Linux 경로에 바인드 마운트하는 것입니다.

이는 프로세스가 쓰기 위해 파일을 열고 해당 위치에서 수정할 때 작동합니다. 그러나 위에서 언급한 것처럼 프로세스가 동등한 mv.

답변1

a와 b는 마운트 지점을 참조하므로 사용할 수 없습니다 mv. 그러나 를 사용하여 재정의할 수 있습니다 cp.

또는 b에 바인드 마운트하는 대신 상위 디렉터리를 바인드 마운트할 수 있습니다.

답변2

편집하다포인트는 이동하거나 삭제할 수 없으며 본질적으로 변경할 수 없습니다.

그러나 여기에 몇 가지를 설치할 수 있습니다.

mv또한 이전에 존재했던 하드 링크를 끊습니다.

관련 정보