Windows 10 Enterprise의 Ubuntu 하위 시스템에서 파일을 삭제할 수 없습니다

Windows 10 Enterprise의 Ubuntu 하위 시스템에서 파일을 삭제할 수 없습니다

이것은 잘못된 포럼일 수도 있지만 어쨌든 시도해 보겠습니다. Windows 10 Enterprise에서 우분투 하위 시스템을 실행하고 있습니다.

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의 파일 시스템이 더욱 강력해집니다.

또한 Microsoft 블로그에서 언급했듯이할 수 있는Windows에서 WSL 파일에 액세스하세요. 다만 그 경로를 이용해야만 \\wsl$\<distroname>안전하게 할 수 있다는 것입니다.


"제안된 솔루션"의 경우 며칠 전에 Ask Ubuntu에 게시한 유사한 질문에 대한 답변을 복사/붙여넣을 것입니다. 하지만 해당 포스터로부터 이를 사용하여 성공했는지 묻는 응답을 받지 못했습니다. 지침:

잠재적인 솔루션:

나는 당신이 이미 컴퓨터를 다시 시작했다고 가정하고 있지만, 그렇지 않다면 시도해 보고 만일을 대비하여 모든 핸들/잠금이 해제되었는지 확인하십시오. 작동할 가능성은 상대적으로 적지만 시도해 볼 가치가 있습니다.

그래도 문제가 해결되지 않으면 WSL1 인스턴스를 복구해 보는 것이 좋습니다.

wsl --export기본적으로 WSL1 인스턴스로/에서 이동합니다 wsl --import. tar프로세스에 의해 수행되는 왕복가능한손상된 파일은 보관하거나 보관 취소(그 중 하나)할 때 제거(또는 적어도 잠김)됩니다.

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 머신)으로 가져왔습니다. 하지만 그렇습니다. 그렇습니다. . 제대로 된 리눅스 환경이었기 때문에 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

그래서 거기에 있습니다.

관련 정보