लिनक्स पर खुली लेकिन हटाई गई फ़ाइल को cp के बजाय ln का उपयोग करके कैसे पुनर्प्राप्त करें?


8

मेरे पास एक फ़ाइल है जो डाउनलोड कर रहा है (एक स्रोत से जिसे फिर से डाउनलोड करना मुश्किल है), लेकिन गलती से फाइल सिस्टम नेमस्पेस (/ tmp / blah) से हटा दिया गया है, और मैं इस फ़ाइल को पुनर्प्राप्त करना चाहता हूं।

आम तौर पर मैं बस कर सकता था cp /proc/$PID/fd/$FD /tmp/blah, लेकिन इस मामले में मुझे केवल एक आंशिक स्नैपशॉट मिलेगा, क्योंकि फ़ाइल अभी भी डाउनलोड हो रही है। इसके अलावा, एक बार डाउनलोड पूरा हो जाने के बाद, डाउनलोडिंग प्रक्रिया (जैसे क्रोम) एफडी को बंद कर देगी।

किसी भी तरह से इनकोड द्वारा पुनर्प्राप्त करने के लिए / एक कठिन लिंक बनाने के लिए? कोई और उपाय? अगर इससे कोई फर्क पड़ता है, तो मैं मुख्य रूप से ext4 से संबंधित हूं।

जवाबों:


11

फ़ाइल को लगातार कॉपी करने के लिए पूंछ का उपयोग करने का प्रयास करें:

tail -c +0 -f /proc/$pid/fd/$fd > filename

बेशक, आपको डाउनलोड होने पर पूंछ की प्रक्रिया को हाथ (या कुछ अन्य बाहरी साधनों) से रोकना होगा।


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

4

Fdlink प्रोजेक्ट, जिसमें लिनक्स कर्नेल मॉड्यूल और सरल अनुप्रयोग शामिल है, एक ओपन फाइल डिस्क्रिप्टर के लिए एक नई लिंक बनाने के लिए उद्देश्य रखता है । मैंने कोशिश नहीं की है।


1

यह काम किया जाएगा, हालांकि इनोड को ठीक करके नहीं:

cp /proc/$PID/fd/$FD /tmp/blah
kill $PID
wget -c $URL -O /tmp/blah

या यदि आप संपूर्ण ब्राउज़र को नहीं मारना चाहते हैं तो बस Chrome में डाउनलोड को रोक दें।


यदि केवल समस्या इतनी सरल थी कि मैं बस फिर से शुरू कर सकता था / / फिर से डाउनलोड! मैंने यह इंगित करने के लिए प्रश्न को स्पष्ट किया कि मैं यह नहीं मान सकता कि मैं फिर से डाउनलोड कर सकता हूं।
यांग

परेशानी की तरह लगता है :-) ऐसा लगता है कि किसी भी इनोड आधारित हैक्स वैसे भी निम्न-स्तर और फाइलसिस्टम-विशिष्ट हैं।
पावेल

हाँ, मैंने इसे अपने प्रश्न में भी जोड़ा है: अगर इससे कोई फर्क पड़ता है, तो मैं मुख्य रूप से ext4 से संबंधित हूं।
यांग

1

यदि आप इस पर एक हार्ड लिंक करना चाहते हैं, तो आपको -s विकल्प का उपयोग करना होगा (देखें man ln) ताकि fd डायरेक्टरी रन हो ls -fऔर फाइलेनंबर (ज्यादातर दो-अंकीय संख्या) का पता लगाएं और एक बनाएंln NUMBER destination-file -s

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