![바인드 마운트에서 제공하는 파일이 "mv"를 통한 덮어쓰기를 지원할 수 있습니까?](https://linux55.com/image/208006/%EB%B0%94%EC%9D%B8%EB%93%9C%20%EB%A7%88%EC%9A%B4%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%A0%9C%EA%B3%B5%ED%95%98%EB%8A%94%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%22mv%22%EB%A5%BC%20%ED%86%B5%ED%95%9C%20%EB%8D%AE%EC%96%B4%EC%93%B0%EA%B8%B0%EB%A5%BC%20%EC%A7%80%EC%9B%90%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
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
또한 이전에 존재했던 하드 링크를 끊습니다.