วิธีการเข้าถึงไฟล์ linux / Ubuntu จาก Windows 10 WSL


71

คำถามนี้ตอบวิธีการเข้าถึงไฟล์ Windows จาก Ubuntu Bash แต่ฉันจะทำตรงข้ามได้อย่างไร

โดยเฉพาะฉันต้องเข้าถึงคีย์ SSH ของฉันจาก Windows ซึ่งอยู่ที่/home/mark/.ssh/id_rsaBash



(ฉันได้แนะนำให้ปิดคำถามที่เชื่อมโยงของ phuclv ในฐานะ dupe ตามลำดับเวลาย้อนกลับเนื่องจากคำถามนี้เป็นคำถามทั่วไปและมีคำตอบที่ดีกว่าและเป็นปัจจุบันมากขึ้น)
Bob

คำตอบ:


26

PM สำหรับ Windows Command-Line ที่นี่:

Updated ตุลาคม 2019 : การอัปเดตการตอบสนองด้านล่างเพื่อสะท้อนให้เห็นถึงความสามารถในการเพิ่มทุนให้แก่ไฟล์ลินุกซ์เข้าถึงโดยตรง distros' ผ่านทางเซิร์ฟเวอร์ P9 แบบบูรณาการใหม่ใน Win10 1903 (และต่อมา)

สิ่งสำคัญ : การแพร่กระจายผ่านระบบไฟล์ Windows เพื่อเข้าถึงไฟล์ Linux มีและจะยังไม่ได้รับการสนับสนุนและแนะนำอย่างต่อเนื่อง! เพื่อทำความเข้าใจว่าทำไมโปรดอ่านโพสต์นี้

ดังนั้นหนึ่งเข้าถึงไฟล์ลินุกซ์โดยใช้เครื่องมือ Windows (เช่น notepad, VS / VScode ฯลฯ ) อย่างไร ก่อนหน้านี้คุณทำไม่ได้ แต่เริ่มใน Windows 10 1903 พวกเรา (ในที่สุด!) เปิดเผยระบบไฟล์ของ distros ของคุณไปยัง Windows ผ่านทางเซิร์ฟเวอร์ไฟล์ P9 เราได้ตีพิมพ์วิดีโอเชิงลึกเกี่ยวกับวิธีการทำงานของมัน ! คุณสามารถอ่านบทสรุปของคุณสมบัติใหม่นี้ได้ในโพสต์บล็อกนี้

ป้อนคำอธิบายรูปภาพที่นี่

หวังว่าจะได้ทราบว่าคุณจะได้รับคุณลักษณะนี้ต่อไปอย่างไร หากคุณพบปัญหาใด ๆ โปรดปัญหาไฟล์บน GitHub WSL repo ที่นี่: https://github.com/Microsoft/wsl


ครับ, ไฟล์เซิร์ฟเวอร์ 9P นี้มีความเสถียรสำหรับผู้ใช้ปกติหรือไม่? ถ้าไม่เช่นนั้นอาจเป็นการดีกว่าถ้าคุณเพิ่มคำเตือนเกี่ยวกับการใช้บิวด์ภายในที่ไม่เสถียร ผู้ใช้หลายคนอาจไม่คุ้นเคย แม้ว่าข้อเท็จจริงที่น่าสนใจอย่างหนึ่งคำตอบของคุณมีบล็อกตั้งแต่ปี 2016 และ 2019 ~ 3 ปี;)
Biswapriyo

Ooh นั่นเป็นข่าวที่น่าตื่นเต้น !! ขอบคุณสำหรับการแชร์!
mpen

@ biswaprio.it ชัดเจนมากในขั้นตอนแบบแมนนวลที่ต้องทำเพื่อเข้าร่วมโปรแกรม Insider ซึ่งการเปิดตัวเหล่านี้เป็นเวอร์ชั่นลดลงทุกสัปดาห์ของ Windows เวอร์ชั่นถัดไปเนื่องจากมีการสร้างขึ้นมา และใช่เซิร์ฟเวอร์ 9P จะมีเสถียรภาพสำหรับผู้ใช้ทั่วไปในระบบปฏิบัติการรุ่นหลักที่มาถึงภายใน และใช่ความจริงที่ว่าเราต้องใช้เวลานานในการสร้างและเริ่มส่งมอบโซลูชันที่เหมาะสมที่นี่ควรให้แนวคิดบางประการเกี่ยวกับวิธีการที่ยุ่งยากสำหรับทีมงานขนาดเล็กของเราในการจัดลำดับความสำคัญและวิศวกร
Richard Turner

1
ฉันได้ลองใช้คำสั่งนี้จาก Ubuntu พร้อมกับการอัปเดตระบบของฉันทุกครั้งตั้งแต่ฉันได้ยินครั้งแรกว่ามีการเปิดตัว นักสำรวจของฉันไปที่โฟลเดอร์เอกสารของฉันเสมอ และฉันยังไม่พบขั้นตอนใด ๆในการ "เปิดใช้งาน" คุณลักษณะนี้
Axeman

3
สถานการณ์คล้ายกับ Axeman เมื่อฉันเรียกใช้explorer.exe .จะเปิดโฟลเดอร์ System32 @RichardTurner ขั้นตอนที่ทำเองอยู่ที่ไหน
Chris

57

ตำแหน่งถูกย้ายในรีลีสล่าสุดไปที่:

C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\

ดูปัญหา GitHub นี้จากMicrosoft / WSL # 2578

ดังที่กล่าวไว้ในฉบับด้านบนและความคิดเห็นด้านล่างอย่ายุ่งกับไฟล์เหล่านี้จาก windows os

https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/


1
ขอบคุณ! คิดว่าฉันบ้าไปแล้วที่พยายามทำตามคำแนะนำเก่า ๆ ฉันไม่ได้มีโฟลเดอร์ lxss ด้วยซ้ำ
Alex S

1
ข้อมูลนี้ยังคงเป็นจริงหรือไม่? ฉันไม่พบโฟลเดอร์ดังกล่าวใน Windows 10
Bruno Finger

6
เราขอแนะนำอย่างจริงจังว่าคุณไม่ได้เข้าไปในโฟลเดอร์รากของ DISTRO ROOT จาก WINDOWS ถ้าคุณทำการสูญหายของข้อมูลและ / หรือความเสียหายมีแนวโน้ม: โปรดอ่านโพสต์นี้สำหรับรายละเอียดเพิ่มเติมได้ที่: blogs.msdn.microsoft.com/commandline/2016/11/17/...
ริชาร์ดเทอร์เนอ

1
"ฉันสงสัยว่าใคร ๆ ก็พยายามที่จะจัดการหรือเปลี่ยนแปลงไฟล์แบบนั้น" ทำไมคุณถึงคิดว่าฉันตะโกนคำแนะนำข้างต้น? เราได้ยินจากคนหลาย ๆ ครั้งต่อสัปดาห์ยอดเยี่ยมได้เพิกเฉยหรือไม่ได้อ่านคำแนะนำนี้และทำให้ไฟล์ในโฟลเดอร์รากของพวกเขาเสียหาย เฮ้มีเครื่องมือที่แทนที่ไฟล์ distros (เบต้า) ของคุณที่มักทำให้เกิดเช่นกัน
Richard Turner

1
ฉันเรียกดูโฟลเดอร์ที่ฉันสร้างขึ้นผ่าน Ubuntu WSL ใน Explorer และผลที่ตามมาก็คือการอนุญาตที่ไม่สามารถคืนสภาพได้ ... ดังนั้นใช่ฉันจะไม่แนะนำให้ทำเช่นนี้!
SamAndrew81

9

พบได้โดยค้นหาไดรฟ์ C ทั้งหมดของฉัน ไฟล์อยู่ที่นี่:

C:\Users\<username>\AppData\Local\lxss

เช่นรหัส SSH ของฉันอยู่ที่นี่:

C:\Users\Mark\AppData\Local\lxss\home\mark\.ssh\id_rsa

2
ดูเหมือนว่าเส้นทางจะเปลี่ยนไปตั้งแต่การอัพเดท FCU อย่างเป็นทางการ
Briefkasten

1
@Briefkasten ฉันเพิ่งอัพเดตเป็น FCU และไฟล์ของฉันยังคงอยู่ที่นั่น สร้างไฟล์ใหม่ภายใต้ Bash เพื่อให้แน่ใจ คุณอัพเกรด WSL หรืออะไรบางอย่าง?
mpen

2
@John D WSL ตั้งอยู่ใน Package Folder ซึ่งจะติดตั้งแอพ สำหรับฉันมันคือ: C: / Users / {ชื่อผู้ใช้} /AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/rootfs/ เพื่อgithub.com/Microsoft/WSL/issues/402#issuecomment-321853125
Briefkasten

9

ใช่ แต่ไม่แนะนำให้จัดการโฟลเดอร์นั้นจาก windows explorer หากคุณต้องการคัดลอกย้ายแก้ไขหรือลบไฟล์จากโฟลเดอร์ lxss ที่คุณต้องทำในทุบตีด้วยเครื่องมือบรรทัดคำสั่ง เฉพาะไฟล์ที่อยู่บน / mnt / * เท่านั้นที่สามารถจัดการได้จริง ๆ จาก windows explorer


1
แม้แต่ไฟล์ข้อความธรรมดา ๆ ? ข้อผิดพลาดคืออะไร?
mpen

3
ทุกไฟล์ที่อยู่ในโฟลเดอร์ Volfs (เช่น / home) มีคุณสมบัติเพิ่มเติมที่จัดเก็บสิทธิ์ Linux ของไฟล์นั้น หากคุณแก้ไขไฟล์นั้นในโปรแกรมแก้ไขหน้าต่างคุณสมบัติเหล่านั้นจะหายไปและไฟล์จะหายไปจากการทุบตี คุณสามารถอ่านเพิ่มเติมได้ที่นี่: blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support
onoma

4
ดูเหมือนว่าจะเป็นข้อผิดพลาด Windows ไม่ควรอนุญาตให้เราเข้าถึงไฟล์เหล่านั้นหรือให้สิทธิ์การเข้าถึงแบบอ่านอย่างเดียวกับเราหรือพวกเขาควรขัดขวางการเรียกการเขียนไปยังไฟล์ linux และไม่ต้องปรับเปลี่ยนแอตทริบิวต์ ขอบคุณสำหรับทิป. ฉันแค่ต้องการอ่านไฟล์ดังนั้นหวังว่าจะไม่มีปัญหา
mpen

5

ในการpowershellใช้งาน

cd ${env:appdata}\..\local\packages\canonical*\localstate\rootfs

แล้วก็

ls

ส่งคืนรายการโฟลเดอร์เดียวกับ

ls / 

ภายใน bash บน WSL


4

ดังที่ได้กล่าวไว้ข้างต้นโดยไฟล์ [onoma] ในไดเรกทอรี WSL มีคุณลักษณะที่จะหายไปหากมีการจัดการโดยใช้ explorer หรือ text editor ที่ทำงานภายใต้ระบบ Windows วิธีแก้ปัญหาอาจเริ่มต้น ssh-server ใน WSL (อาจจำเป็นต้องติดตั้งใหม่) ฟัง localhost แล้วติดตั้งระบบไฟล์ WSL เป็นไดรฟ์ที่ใช้ตัวอย่างเช่น win-sshfs หรือคุณสามารถใช้ Bitvise SSH ไคลเอ็นต์เพื่อเชื่อมต่อผ่าน ssh และจัดการไฟล์โดยหน้าต่าง sftp หัวข้อถูกกล่าวถึงบางส่วนที่นี่: ฉันจะ SSH เป็น“ Bash บน Ubuntu บน Windows 10” ได้อย่างไร?


3

subst L: $env:LOCALAPPDATA\lxss (สำหรับ PowerShell)

หรือsubst L: %LocalAppData%\lxss(จากcmd)

สิ่งนี้ทำให้ระบบไฟล์รูท/ของระบบย่อย Linux ของคุณบนไดรฟ์L:

นอกจากนี้คุณยังสามารถแมปไดเรกทอรีบ้านของคุณหรือเพียงแค่ตี%LocalAppData%\lxssในหน้าต่างสำรวจ อย่าลองเรียกดู L: \ mnt \ c ไม่เช่นนั้นสมองของคุณอาจระเบิด


3
ทางออกที่ดี! สำหรับ Windows 10 ในปัจจุบันเป็นส่วนย่อย L: $ env: LOCALAPPDATA \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs
Andreas M. Oberheim

3

ในที่สุดฉันก็หาวิธีเปิด explorer (และ vscode) ด้วยบริบทโฟลเดอร์ที่ถูกต้องจริงจากภายใน WSL: https://github.com/andymule/wslwin

ตัวอย่างเช่นหลังจากที่คุณติดตั้งสิ่งนี้ใน linux (WSL) คุณจะcd /home/mark/.ssh/พิมพ์explorerและมันจะเปิด windows explorer ที่ตำแหน่งนั้นไม่ว่ามันจะเป็นอะไร

แก้ไข: ฟีเจอร์นี้ได้รับการสนับสนุนอย่างเป็นทางการใน WSL แล้วและคุณไม่ควรใช้สคริปต์ของฉันอีกต่อไป


2

ฉันอยู่ในการปรับปรุงของ Windows 10 ผู้สร้าง ฉันใช้ SFTP NetDrive เพื่อติดตั้งระบบไฟล์ WSL ลงใน windows เช่นเดียวกับไดรฟ์เครือข่าย

มีพอร์ต Window sshFS บางตัวที่จะทำสิ่งเดียวกัน

คุณจะต้องเริ่มต้น ssh daemon ผ่าน "sudo service ssh start"


อะไรคือข้อดีของการไปที่ไฟล์โดยตรง?
mpen

ไฟล์มีข้อมูลเมตาแนบอยู่ซึ่งอาจหายไปเมื่อเข้าถึงแอพพลิเคชั่นโดยตรงที่ไม่เข้าใจข้อมูลเมตา
mlk

0
\\wsl$\Ubuntu\home\user\whatever 

ใน explorer หรือวิดเจ็ต Run (Cmd + R) ทำงานเหมือนเครือข่ายปกติและปลอดภัยในการจัดการไฟล์

คุณสามารถแมปไปยังไดรฟ์หรือโฟลเดอร์เช่นเดียวกับเครือข่ายอื่น ๆ

หมายเหตุ:นี่เป็นคุณลักษณะใหม่ที่นำมาใช้ใน Windows 10 บิลด์ 18342

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.