WindowsTerminalのsettings.jsonをクラウドで同期
方法
settings.json が置いてあるディレクトリ (LocalState) ごとシンボリックリンクを張る。
以下は OneDrive を使って同期する例。(ちなみに私は Dropbox で同期している。)
なお、cmd によるシンボリックリンクの作成には管理者権限が必要。
> rd %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
> mklink /D %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState %OneDrive%\WindowsTerminal\LocalState
symbolic link created for C:\Users\yabeenico\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState <<===>> C:\Users\yabeenico\OneDrive\WindowsTerminal\LocalState
以上で LOCALAPPDATA
-> OneDrive
なシンボリックリンクが出来上がる。
失敗例
settings.json のシンボリックリンク (LOCALAPPDATA -> OneDrive)
settings.json のシンボリックリンクを LOCALAPPDATA
から OneDrive
に向けて張った場合、settings.json を更新しても WindowsTerminal に変更が即時反映されない。
変更を反映するためには WindowsTerminal の再起動が必要。
settings.json の変更のたびに再起動する手間が許容できるならこれでも良いかもしれない。
> mklink %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json %OneDrive%\WindowsTerminal\LocalState\settings.json
settings.json のシンボリックリンク (OneDrive -> LOCALAPPDATA)
settings.json のシンボリックリンクを OneDrive
から LOCALAPPDATA
に向けて張った場合、settings.json が OneDrive によって同期されない。
OneDrive はシンボリックリンクを同期しない。
> mklink %OneDrive%\WindowsTerminal\LocalState\settings.json %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
settings.json のハードリンク
期待通りに同期できない。
同期先の OneDrive 中の settings.json は File ID が新しいものに変化する。
つまり、OneDrive (や Dropbox) は同期先のファイルを変更する時、既存のファイルに上書きするのではなく、一旦古いファイルを削除し、新しいファイルを作成するような挙動を行う。
以下は LOCALAPPDATA
から OneDrive
(既存) にハードリンクを張る例。
> mklink /H %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json %OneDrive%\WindowsTerminal\LocalState\settings.json
同期元、同期先でハードリンクを張った状態で、同期元でファイルを編集した場合の挙動:
> rem =============== 初期状態 ===============
> type %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json | findstr theme
"theme": "light"
> type %OneDrive%\WindowsTerminal\LocalState\settings.json | findstr theme
"theme": "light"
> rem File ID が等しい
> fsutil file queryFileID %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
File ID is 0x0000000000000000003800000001dab7
> fsutil file queryFileID %OneDrive%\WindowsTerminal\LocalState\settings.json
File ID is 0x0000000000000000003800000001dab7
> rem ハードリンクの被リンク数は2
> fsutil hardlink list %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
\Users\yabeenico\OneDrive\WindowsTerminal\LocalState\settings.json
\Users\yabeenico\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
> rem ===== "theme": "dark" に変更 =====
> vim %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
> type %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json | findstr theme
"theme": "dark"
> type %OneDrive%\WindowsTerminal\LocalState\settings.json | findstr theme
"theme": "dark"
> rem File ID は変化しない
> fsutil file queryFileID %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
File ID is 0x0000000000000000003800000001dab7
> fsutil file queryFileID %OneDrive%\WindowsTerminal\LocalState\settings.json
File ID is 0x0000000000000000003800000001dab7
> rem ハードリンクの被リンク数も変化しない
> fsutil hardlink list %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
\Users\yabeenico\OneDrive\WindowsTerminal\LocalState\settings.json
\Users\yabeenico\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
> rem =============== 初期状態 ===============
> type %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json | findstr theme
"theme": "light"
> type %OneDrive%\WindowsTerminal\LocalState\settings.json | findstr theme
"theme": "light"
> rem File ID が等しい
> fsutil file queryFileID %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
File ID is 0x000000000000000001e0000000003a11
> fsutil file queryFileID %OneDrive%\WindowsTerminal\LocalState\settings.json
File ID is 0x000000000000000001e0000000003a11
> rem ハードリンクの被リンク数は2
> fsutil hardlink list %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
\Users\yabeenico\OneDrive\WindowsTerminal\LocalState\settings.json
\Users\yabeenico\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
> rem ===== OneDrive の同期開始 -> 完了 =====
> rem LOCALAPPDATA の settings.json は変化なし
> type %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json | findstr theme
"theme": "light"
> rem OneDrive の settings.json は変化
> type %OneDrive%\WindowsTerminal\LocalState\settings.json | findstr theme
"theme": "dark"
> rem LOCALAPPDATA の File ID は変化なし
> fsutil file queryFileID %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
File ID is 0x000000000000000001e0000000003a11
> rem OneDrive の File ID は変化
> fsutil file queryFileID %OneDrive%\WindowsTerminal\LocalState\settings.json
File ID is 0x0000000000000000007200000000c2eb
> rem ハードリンクの被リンク数はどちらも1
> fsutil hardlink list %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
\Users\yabeenico\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
> fsutil hardlink list %OneDrive%\WindowsTerminal\LocalState\settings.json
\Users\yabeenico\OneDrive\WindowsTerminal\LocalState\settings.json
Author And Source
この問題について(WindowsTerminalのsettings.jsonをクラウドで同期), 我々は、より多くの情報をここで見つけました https://qiita.com/yabeenico/items/11b8fc34f7e554c2c665著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .