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

おすすめ記事