재정의 -fs 및 vim을 사용하여 상위 디렉토리 편집

재정의 -fs 및 vim을 사용하여 상위 디렉토리 편집

overlay-fs개발 목적으로 사용자 정의 변경 사항을 기본 파일 구조에 병합하는 방법을 사용합니다 . 병합된 폴더는 Java 응용 프로그램에서 사용됩니다.

이제 사용할 때 이상한 동작이 발생합니다.상위 폴더의 사용자 정의 파일을 편집하는 경우: 변경 사항이 병합된 폴더에 반영되지 않습니다. (분명히) 다른 모든 편집기(nano, code, gedit 등)는 작동하는 것 같습니다. 따라서 vim은 파일을 다르게 저장합니다. 복사하려면 루트로 다음을 수행하십시오.

# created needed folders
$ mkdir -p overlay/{lower,upper,work} merged
# mount the folders with overlay-fs
$ mount -t overlay overlay -o upperdir=overlay/upper,lowerdir=overlay/lower,workdir=overlay/work merged/
# create file in lower-folder with content "foo"
$ echo "foo" >overlay/lower/file.txt
$ cat merged/file.txt
# foo
# create override for file.txt in upper folder
$ echo "bar" >overlay/upper/file.txt
$ cat overlay/lower/file.txt
# foo
$ cat overlay/upper/file.txt
# bar
$ cat merged/file.txt
# foo # <- FALSE
# remount for reinitialization
$ mount -o remount merged
$ cat merged/file.txt
# bar # <- TRUE
$ echo "baz" >merged/file.txt
$ cat overlay/lower/file.txt
# foo
$ cat overlay/upper/file.txt
# baz
$ cat merged/file.txt
# baz

파일이 upper폴더에 아직 존재하지 않는 경우 변경 사항은 병합된 폴더에 반영되지 않습니다. 파일 시스템을 다시 마운트해야 합니다.

vim을 사용하여 merged/file.txt를 수정하고 foobar;

$ cat overlay/lower/file.txt
# foo
$ cat overlay/upper/file.txt
# foobar
$ cat merged/file.txt
# foobar

같은 것이 예상됩니다. 모든 게 괜찮아

이제 vim을 사용하여 overlay/upper/file.txt를 수정하고 foobaz;

$ cat overlay/lower/file.txt
# foo
$ cat overlay/upper/file.txt
# foobaz
$ cat merged/file.txt
# foobar # <- FALSE

이것은 예상치 못한 일입니다. 이것도 merged/file.txt바뀌어야 할 것 같아요foobaz

$ mount -o remount merged
$ cat merged/file.txt
# foobaz # <- TRUE

IE를 사용하여 동일한 변경을 수행하면 echo올바르게 작동합니다.

$ echo "foobazaar" >overlay/upper/file.txt
$ cat overlay/lower/file.txt
# foo
$ cat overlay/upper/file.txt
# foobazaar
$ cat merged/file.txt
# foobazaar # <- TRUE

또는 대신 echo사용할 수도 있습니다.nanocode.

vim의 이러한 동작을 나에게 설명해 줄 수 있는 사람이 있나요? 이것은 overlay-fs의 버그입니까?

관련 정보