विंडोज लिनक्स सबसिस्टम - उबंटू के बाहर फाइल एक्सेस करना


90

क्यों, जब मैं उदाहरण के लिए विंडोज के भीतर से एक फ़ाइल बनाता हूं, तो क्या मैं इसे विंडोज 10 में लिनक्स सब सिस्टम के तहत नहीं देख सकता (bash.exe)

स्क्रीनशॉट को समझाना चाहिए।

फ़ोल्डर: OMG विंडोज एक्सप्लोरर के भीतर से बनाया गया था। Folder OMGBash को लिनक्स सब सिस्टम bash.exe से बनाया गया था

जब किसी फ़ोल्डर या फ़ाइल को bash.exe के बाहर बनाया जाता है, तो मैं इसे कभी भी देख नहीं सकता, बिना अनुमति और स्वामित्व के।

फ़ाइल अनुमतियाँ दिखाने के लिए मुझे Cygwin का उपयोग करने के लिए जो जानकारी मिली है, उसे दिखाने के लिए, मैंने यह भी देखने के लिए अनुमतियाँ बदल दी हैं कि क्या फ़ोल्डर दिखाई देगा। (नीचे दो कमांड विंडो)

स्क्रीनशॉट दिखा रहा है फ़ोल्डर, bash.exe और Cygwin अनुमतियाँ:

यहाँ छवि विवरण दर्ज करें

मैं लिनक्स सबसिस्टम पर अपनी सभी सिग्विन लिपियों को स्थानांतरित करने की कोशिश कर रहा हूं, लेकिन मुझे हर फाइल को फिर से बनाना और फिर बैश का उपयोग करके कॉपी करना और फिर डीओएस 2 यूनिक्स (बहुत लंबे समय तक वाइंडेड) का उपयोग करके अतीत की कल्पना नहीं करना है।

लिनक्स सबसिस्टम के लिए GitHub पर यह मिला:

अन्य टिकटों पर चर्चा के अनुसार, विंडोज से लिनक्स सबसिस्टम में सीधे कॉपी करना समर्थित नहीं है। कहीं कहीं AppData के तहत एक निर्देशिका है (मैं भूल जाता हूं कि कहां है) जो WSL फाइल सिस्टम के लिए फाइलें सम्‍मिलित करता है। लेकिन अगर आप वहां नई फाइलें डालते हैं, या वहां मौजूद फाइलों को संशोधित करते हैं, तो आपके परिवर्तन डब्ल्यूएसएल के अंदर सही ढंग से नहीं दिखाई देते हैं।

मेरा सबसे अच्छा अनुमान है कि लिनक्स को विंडोज की तुलना में इसकी फ़ाइलों के बारे में अलग-अलग मेटाडेटा (और अधिक कैशिंग जानकारी, आदि, क्योंकि इसकी डिस्क-बफ़रिंग मॉडल भी अलग है) को संग्रहीत करने की आवश्यकता है, और यह वर्तमान में संरचना की मास्टर कॉपी को संग्रहीत करके लागू किया गया है। कुछ प्रकार के डेटाबेस में लिनक्स फाइलसिस्टम, और उस डेटाबेस के लिए सुविधाजनक BLOB-store के रूप में सिर्फ विंडोज फाइलसिस्टम का उपयोग करना।

यदि आपको वास्तव में ऐसा करने की आवश्यकता है, तो एक वर्कअराउंड एक ड्रैगनेनड्रॉप .bat स्क्रिप्ट या somesuch लिखने के लिए होगा जो bash.exe -c "mv% 1 / home / $ USER /" करता है। (आपको एक वैध डब्लूएसएल पथ में% 1 का अनुवाद करने के लिए, शायद sed और tr के साथ कुछ चतुर काम करना होगा।)

वैकल्पिक रूप से - क्या आप अपनी फ़ाइलों को एक Windows निर्देशिका में और, WSL के अंदर, "cd ~? Ln -s / mnt / c / path / to / my / files" कर सकते हैं, ताकि वे आपके WSL होमडियर में दिखाई दें?


क्या लिनक्स वातावरण के तहत विंडोज़ एचडीडी को माउंट करना संभव है? इस तरह से यह सभी फाइलों को रियलटाइम में दिखाना चाहिए ... (या
सिगविन

3
महान विचार, लेकिन दुर्भाग्य से फाइलें दिखाई नहीं दे रही हैं। इसके आस-पास का तरीका, Bash.exe के माध्यम से Windows निर्देशिका से लिनक्स सब सिस्टम निर्देशिका में फ़ाइलों को कॉपी करना है। इस तरह से करना cp -r --no-preserve=all पिछले अनुमतियों को छोड़ने की आवश्यकता है । फिर भी, यदि आप कोई भारी परिवर्तन करना चाहते हैं, तो आप LinuxSubSystem में फ़ाइल को संपादित करने के लिए एक विंडोज़ एप्लिकेशन का उपयोग नहीं कर सकते, आपको इसे अपनी विंडोज़ निर्देशिका में संपादित करना होगा और फिर इसे कॉपी करना होगा। अब मुझे यह पता है, इसका काम करने योग्य, लेकिन मैं इस धारणा के तहत था कि लिनक्स सब सिस्टम एक अलग ओएस की तुलना में खिड़कियों में अधिक देशी / एकीकृत था
डेव हैमिल्टन

आप इस मुद्दे की प्रगति (विंडोज़ और डब्ल्यूएलएस के बीच फ़ाइलों की हैंडलिंग) को github.com/Microsoft/BashOnWindows/issues/1051
Gaia

यदि आप विंडोज स्टोर से डिस्ट्रो स्थापित करते हैं, तो फाइलसिस्टम पर होगा %LocalAppData%\Packages\<some-long-name-of-distro>\LocalState\rootfs
इयान केम्प

जवाबों:


101

मुझे यकीन नहीं है कि अगर मैं आपके प्रश्न को गलत समझ रहा हूं, लेकिन आपके ubuntu bash (शीर्ष दाएं विंडो) के तहत आपके विंडोज-आधारित डिस्क तक पहुंच होनी चाहिए /mnt। उदाहरण के लिए, मेरी मशीन /mnt/c/Users/Scott/Desktopपर मेरा विंडोज डेस्कटॉप है और मैं पूर्व से वहां vi से फाइल पढ़ / लिख सकता हूं। मुझे विश्वास नहीं है कि विपरीत अभी तक सच है। यही है, मुझे नहीं लगता कि आप विंडोज एक्सप्लोरर से अपनी बैश दुनिया में खोज कर सकते हैं।

एक डेवलपर के रूप में मैं क्या कर रहा हूं, मेरे d पर प्रोजेक्ट्स को होस्ट करना है: और उस /mnt/d/projects/someproject/फ़ोल्डर में लिनक्स-आधारित टूल को इंगित करें ।

सुनिश्चित करें कि आप अपने विंडोज बिल्ड को समय-समय पर अपडेट करते हैं क्योंकि वे प्रत्येक बिल्ड के साथ बहुत सारे मुद्दों को ठीक करते दिखते हैं, विशेष रूप से लिनक्स और विंडोज के बीच एफएस सीमाओं को पार करते हुए।


1
आप सही हैं, मुझे लगता है कि मैंने बंदूक को थोड़ा कूद दिया। हालांकि बैश विंडोज़ फ़ाइलों तक पहुँच सकता है, विंडोज़ लिनक्स सब सिस्टम डायरेक्टरी में फाइलों को कॉपी नहीं कर सकता है। (यह तब कॉपी कर सकता है, लेकिन बैश उन्हें नहीं देख सकता क्योंकि यह फाइलों की अनुमति को संरक्षित करता है) जब मुझे बैश स्थापित किया गया था, तो मैं सबसे तार्किक बात यह थी कि मेरी परियोजनाओं को एक लिनक्स पर्यावरण से दूसरे में स्थानांतरित करना था (Cwygin से बिन करने का प्रयास), और इसने मुझे सिरदर्द का मार्ग शुरू कर दिया। मैंने अपने Bashrc को अब अपने पिछले लिनक्स वातावरण की शुरुआती निर्देशिका और वहां से काम करने के लिए कॉन्फ़िगर किया है। आपकी प्रतिक्रिया के लिए धन्यवाद।
डेव हैमिल्टन

रुको, आपको दिखाने के लिए / mnt / d कैसे मिलता है? उदाहरण के लिए, जब मैं एमटीपी के माध्यम से एक फोन कनेक्ट करता हूं, तो यह "इस पीसी \ फोननाम" जैसे मार्ग के तहत दिखाई देता है, लेकिन इसके साथ कोई ड्राइव अक्षर नहीं जुड़ा है।
माइकल

यदि आपके पास अनुगामी स्लैश नहीं है, तो साइमलिंक काम करते हैं। इसके अलावा, आपको स्थानीय स्तर पर Django परियोजनाओं को चलाने और उन्हें ब्राउज़र में एक्सेस करने जैसे काम करने के लिए फाइल सिस्टम के विंडोज साइड में फाइलें रखने की जरूरत है
Zags

लेकिन जब मैं विंडोज़ फ़ाइलों को संशोधित करता हूँ तो लिनक्स फाइलें अपडेट नहीं होती हैं?!?!
BugWhisperer

20

@ scottt732 ने खूबसूरती से जवाब दिया।

डेवलपर्स के लिए सिर्फ एक टिप जो विंडोज में काम करेगा और लिनक्स सबसिस्टम में उन फाइलों को जल्दी एक्सेस करना चाहेगा। आप प्रतीकात्मक लिंक का उपयोग कर सकते हैं ।

उदाहरण के लिए, यदि आप किसी प्रोजेक्ट पर काम कर रहे हैं d:/projects/web-project, तो आप स्थान पर एक सिमलिंक बना सकते हैं /var/www/web-projectऔर विंडोज़ में आपके द्वारा परिवर्तित की जाने वाली सभी फाइलें लिनक्स बैश में पहुंचने के लिए आसानी से उपलब्ध होंगी।

इसके लिए आप lnइस तरह कमांड का उपयोग करेंगे

ln -s  /mnt/d/projects/web-project  /var/www/web-project

ऊपर लाइन /mnt/dमें विंडोज़ पर आपकी डी ड्राइव होना था। अपने Apache वर्चुअल होस्ट को इस पथ पर सेट करें और आप जाने के लिए तैयार हैं।


यह वास्तव में सिंक नहीं करता है ... जब तक मुझे हर बार सर्वर को पुनरारंभ नहीं करना पड़ता है?
बुग्गीसेपर

@ अपने प्रतीकात्मक लिंक को सक्रिय करें, इसलिए आपको इसके लिए सर्वर को पुनरारंभ करने की आवश्यकता नहीं होनी चाहिए। वास्तव में यह सिंक नहीं है, बस उस फ़ोल्डर / पथ की ओर इशारा करता है।
रिग

1
मुझे इस मुद्दे का पता चला। ऐसा इसलिए था क्योंकि CSS फ़ाइल में नाम में एक डैश था, उदाहरण के लिए css-file.css,। मैंने इस मुद्दे के बारे में यहां पोस्ट किया है
बगविश्पर

9

हम अनुशंसा करते हैं कि आप Windows एप्लिकेशन का उपयोग करके लिनक्स फ़ाइलों की प्रतिलिपि बनाएँ / अपडेट न करें

इसके बजाय, विंडोज फाइलसिस्टम (उदा c:\dev\project) में फाइलों को स्टोर करें जिसे आप विंडोज टूल्स का उपयोग करके फाइल एडिट करना चाहते हैं और / या लिनक्स टूल्स / रनटाइम / प्लेटफॉर्म (जैसे के माध्यम से /mnt/c/dev/project) का उपयोग कर निर्माण / परीक्षण करते हैं ।

में: अपने विशिष्ट परिदृश्य में, आप अपने Cygwin फ़ाइलों बैश में तो खुले बैश कॉपी, और सी पर अपने Cygwin फ़ोल्डर से फ़ाइलों की प्रतिलिपि बनाना चाहते हैं ~/, इस तरह: cp /mnt/c/Users/dave/Documents/Cygwin/* ~/)

HTH।


1

मुझे विंडोज 10 पर PyCharm / ग्रहण के साथ काम करने की आवश्यकता थी जबकि दौड़ने / टेस्ट करने के लिए मुझे लिनक्स वातावरण की आवश्यकता थी;

मेरे पास लिनक्स सब सिस्टम में git से जाँच करने और PyCharm फ़ाइलों के साथ संपादन करने के लिए तुरंत समस्या नहीं थी और मुद्दे थे;

devcode=/DevCode

if [ ! -L $devcode ]; then
     ln -s /mnt/c/DevCode /DevCode 
fi

उबंटू क्षेत्र में मेरे .bashrc में उपरोक्त था। यह निर्बाध रूप से काम कर रहा है। मैं विंडोज को संपादित कर सकता हूं और बिना किसी समस्या के उबंटू में दौड़ / परीक्षण कर सकता हूं।


0

मुझे WSL और win10 के बीच फ़ाइलों को कॉपी करने की समान आवश्यकता थी। मैंने उबंटू-इंस्टॉलेशन पर sshd को सक्षम करना समाप्त कर दिया, ताकि मैं लिनक्स में win10 से ssh कर सकूं। फिर मैं आगे और पीछे फ़ाइलों को कॉपी करने के लिए wincp का उपयोग करता हूं। इष्टतम नहीं है, लेकिन मैं बहुत बार फ़ाइलों की नकल नहीं करता हूं। मैंने sshd को सक्षम करने के लिए जिस पोस्ट का उपयोग करने की कोशिश की थी, उसे ढूंढ नहीं पाया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.