Windows 10 Enterprise の Ubuntu サブシステムからファイルを削除できない

Windows 10 Enterprise の Ubuntu サブシステムからファイルを削除できない

これは間違ったフォーラムかもしれませんが、とにかく試してみましょう。 Windows 10 EnterpriseでUbuntuサブシステムを実行しています。

root@hostname:/directory/stuff# cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"

lsファイルはリポジトリにあり、git statusGUI(エクスプローラの表示オプションで「隠しファイル」が選択されている)またはdircmdを介して表示されますが、表示されません。これは、Excelスプレッドシートを開いたときに表示される「隠し」ファイルです。スプレッドシートのみが閉じます。もう一度開いて閉じても削除できません。chmodandを使用して所有権と権限を変更できますがchown、奇妙なことに他の操作はできません。

root@hostname:/directory/stuff# ll
total 14600
...
-rwxrwxrwx 0 my_name my_name     165 Feb 14 13:25 '~$Copy of Full Compilation of Databases for Audit.xlsx'*
root@hostname:/directory/stuff# chown root: ~\$Copy\ of\ Full\ Compilation\ of\ Databases\ for\ Audit.xlsx 
root@hostname:/directory/stuff# ll
total 14600
...
-rwxrwxrwx 0 root    root        165 Feb 14 13:25 '~$Copy of Full Compilation of Databases for Audit.xlsx'*

私は試した:

root@hostname:/directory/stuff# ls -i
...
1688849860795414 '~$Copy of Full Compilation of Databases for Audit.xlsx'
....
root@hostname:/directory/stuff# find . -inum 1688849860795414 -exec rm {} \;
rm: cannot remove './~$Copy of Full Compilation of Databases for Audit.xlsx': No such file or directory
....
root@hostname:/directory/stuff# rm -i -- ./*
...
rm: remove regular file './~$Copy of Full Compilation of Databases for Audit.xlsx'? y
rm: cannot remove './~$Copy of Full Compilation of Databases for Audit.xlsx': No such file or directory
....
root@hostname:/directory/stuff# ls -1b
...
~$Copy\ of\ Full\ Compilation\ of\ Databases\ for\ Audit.xlsx
root@hostname:/directory/stuff# rm ~$Copy\ of\ Full\ Compilation\ of\ Databases\ for\ Audit.xlsx
rm: cannot remove '~ of Full Compilation of Databases for Audit.xlsx': No such file or directory
....
root@hostname:/directory/stuff# mv ~\$Copy\ of\ Full\ Compilation\ of\ Databases\ for\ Audit.xlsx just_a_file.xlsx
mv: cannot move '~$Copy of Full Compilation of Databases for Audit.xlsx' to 'just_a_file.xlsx': No such file or directory

誰でも追加できるものは何でもいいでしょう!

正しい: 上からファイルが見えないと言いました。コマンド管理システムdir行うことができますがdir /a- で行うことができるので、Windowsである程度見ることができます。ただし、CMDでもまだ削除できません(奇妙なことに、ここではタブを完成させます)。

C:\Users\me\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\directory\stuff>dir /a
 Volume in drive C has no label.
...
2022-02-14  13:25               165 ~$Copy of Full Compilation of Databases for Audit.xlsx
...

C:\Users\me\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\directory\stuff>del "~$Copy of Full Compilation of Databases for Audit.xlsx"
Could Not Find C:\Users\me\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\directory\stuff\~$Copy of Full Compilation of Databases for Audit.xlsx

答え1

一種のWSLファイルシステムの破損が発生する可能性が高いです。そのように急いで結論を出すことはできませんが、

  • rootfs明らかにCMDでディレクトリを見ることができるので、WSLバージョン1を使用しているようです。 WSL2では、ext4.vhdxCMDからアクセスできない仮想ディスク()にファイルシステムを保存するため、不可能です。

  • rootfsWindowsアプリケーション(CMDなど)からディレクトリにアクセスしています。ファイルを削除しようとしている場合は、Excelがファイルを作成または編集するために同じパスを使用しているようです。

  • このディレクトリへのアクセスはWSLファイルシステムの破損を引き起こすことが知られています。。このページの引用:

    いかなる場合でも、%LOCALAPPDATA%Windowsアプリケーション、ツール、スクリプト、コンソールなどを使用してフォルダ内のLinuxファイルにアクセスしたり、作成および/または変更したりしないでください。

    特定のWindowsツールを使用してファイルを開くと、開いたファイルやフォルダに読み取りロックが設定され、ファイルの内容やメタデータが更新されず、ファイル/フォルダが破損する可能性があります。

    WindowsのAppdataフォルダからLinuxファイルを作成/変更すると、データの破損やLinux環境が破損する可能性があるため、ディストリビューションを削除して再インストールする必要があります。

これはあなたが経験しているのと同じです。

(あなたの場合は適用されませんが、注意:rootfsWSL1インスタンスを外部に配置することができるので、場所に関係なく「Don't access ... Linux files」と言うのがより正確になりますAppData。)

いつでもExcel、Windows用Git、またはその他のWindowsツールを使用してそのパスにアクセスすると、目に見えるロックが簡単に発生する可能性があります。

ユースケース(およびコンピュータ)がWSL2の使用をサポートしている場合、WSL2のファイルシステムはより強力になります。

また、マイクロソフトのブログで述べたようにできるWindowsでWSLファイルにアクセスします。ただし、その経路を利用しなければ\\wsl$\<distroname>安全にできるということです。


「提案されたソリューション」では、数日前にAsk Ubuntuに投稿した同様の質問に対する回答をコピー/貼り付けます。しかし、そのポスターからそれを使用して成功したかどうかを尋ねる答えを受け取ることができませんでした。指示:

潜在的なソリューション:

私はすでにコンピュータを再起動していると仮定していますが、そうでない場合は試してみてください。動作する可能性は比較的少ないですが、試してみる価値があります。

それでも問題が解決しない場合は、WSL1インスタンスを修復してみることをお勧めします。

wsl --exportデフォルトでは、WSL1インスタンスに/から移動しますwsl --importtarプロセスによって実行される往復可能破損したファイルは、アーカイブまたはアーカイブ解除(その1つ)時に削除(または少なくともロック)されます。

PowerShellでは:

# Confirm the distribution name
wsl -l -v
# Distribution name may be "Ubuntu" or "Ubuntu-20.04" - Adjust the following lines accordingly:
wsl --shutdown
cd ~\Documents
mkdir WSL\images
mkdir WSL\instances\UbuntuRecovery
wsl --export Ubuntu WSL\images\ubuntu.tar
wsl --import UbuntuRecovery WSL\instances\UbuntuRecovery WSL\images\ubuntu.tar --version 1
wsl -d UbuntuRecovery

ファイルが消えたか、新しいインスタンスから削除できることを確認してください。

もしそうなら、新しいインスタンスで他のすべてが大丈夫に見える場合は、次のようにします。

  • /etc/wsl.conf各ファイルにこのインスタンスのデフォルトのユーザー名を設定します。この回答
  • インスタンスの終了
  • 今回もPowerShellは次のことを行います。
    wsl --terminate UbuntuRecovery
    wsl --set-default UbuntuRecovery
    

wsl実行されるたびに、新しいインスタンスがデフォルトインスタンスになります。

最後に、以下を使用して破損したソースインスタンスを削除します。

wsl --unregister Ubuntu

重要:これ破壊的な仕事。すべてが期待どおりに機能していることを確認してください。良いことは、すでにバックアップがあるということです。

当時、ストアからインストールされたUbuntu「アプリ」を削除することもできます。

(または)コマンドが消えた場合wsl(まだ実行していない場合)、またはWindows端末を介して実行します。ubuntu.exeubuntu2004.exe

答え2

どの星が並んでいるのか分かりませんが、今朝ファイルを削除できました。コンピュータをシャットダウンして家に持ち帰ってロックを解除した可能性がありますが、確かにわかるかどうかはわかりません。これを削除するために、リポジトリを適切なLinux環境(同じマシン上の仮想マシン上で実行されているLinux Mint(必ずしも仮想マシンである必要はありません)または問題の同じWindowsマシン)にインポートしました。しかし、そうです。はい。 。きちんとしたLinux環境だったのでnemoからは削除できました。昨日同期すると、この特定のファイルがプルダウンされていないと誓うことができましたが、今日はプルダウンになり、その小さな奴を削除しました。コミットしてプッシュし、WindowsシステムからUbuntuサブシステムをプルすると、ファイルが削除されます。

 dir/to/file > master > git pull
   01239e91..452981f2  master     -> origin/master
Updating 01239e91..452981f2
Fast-forward
 dir/to/file/All-Production.vsdx                                    | Bin 1101177 -> 1100811 bytes
 dir/to/file/~$Copy of Full Compilation of Databases for Audit.xlsx | Bin 0 -> 165 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100755 dir/to/file/~$Copy of Full Compilation of Databases for Audit.xlsx
..
### I deleted file in GIU (nemo) at this point ###
..
 dir/to/file > master > git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    deleted:    ~$Copy of Full Compilation of Databases for Audit.xlsx
..
 dir/to/file > master > git rm \~\$Copy\ of\ Full\ Compilation\ of\ Databases\ for\ Audit.xlsx
rm 'dir/to/file/~$Copy of Full Compilation of Databases for Audit.xlsx'
 dir/to/file > master > git commit -a -m "fixing stupborn ghost "                                         
[master b543cc14] fixing stupborn ghost
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100755 dir/to/file/~$Copy of Full Compilation of Databases for Audit.xlsx
 dir/to/file > master > git push                                 
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 6 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 425 bytes | 425.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
To github.com:my/repo.git
   452981f2..b543cc14  master -> master
....
me@wind_mach directory $ git pull
Enter passphrase for key '/home/me/.ssh/id_rsa':
...
   452981f2..b543cc14  master     -> origin/master
Updating 452981f2..b543cc14
Fast-forward
 dir/to/file/~$Copy of Full Compilation of Databases for Audit.xlsx | Bin 165 -> 0 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100755 Dir/to/file/~$Copy of Full Compilation of Databases for Audit.xlsx

だからそこにあります。

関連情報