オーバーライド -fs と vim を使用して親ディレクトリを編集する

オーバーライド -fs と vim を使用して親ディレクトリを編集する

overlay-fs開発目的でカスタム変更を基本ファイル構造にマージする方法を使用します。マージされたフォルダはJavaアプリケーションによって使用されます。

これで使用すると奇妙な動作が発生します。ウィム親フォルダのカスタムファイルを編集する場合:変更はマージされたフォルダに反映されません。 (明らかに)他のすべてのエディタ(nano、code、geditなど)はうまくいくようです。したがって、vimはファイルを別々に保存します。コピーするには、rootとして次のようにします。

# 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のバグですか?

ベストアンサー1

おすすめ記事