मैं एक .swp फ़ाइल से मूल फ़ाइल कैसे पुनर्प्राप्त कर सकता हूं?


57

मैं का उपयोग कर .swp फ़ाइल को खोलने की कोशिश की viऔर catलेकिन यह कबाड़ प्रदर्शित करता है।


क्या आप vi या vim का उपयोग कर रहे हैं?
frabjous

क्या यह साथ काम करता है emacs? (या उदात्त, नैनो, एड, आदि)
फ्रैंक

जवाबों:


94
vim -r .swp

यह रिकवरी मोड में जाता है और आपको अधिक जानकारी देता है। मुझे लगता है कि आप यही चाहते हैं।

.swX-फाइलों को पीछे छोड़ दिया जाता है यदि एक बिना सहेजे गए फ़ाइल के साथ एक सत्र मारा जाता है / क्रैश / कुछ और खराब होता है। वे उस समय के दौरान भी मौजूद होते हैं जब कोई सहेजा गया बफर विम सत्र में खुला होता है। vim -rइन अस्थायी फ़ाइलों को पढ़ता है और सामग्री को फिर से बनाता है। आपके द्वारा इसे पुनर्प्राप्त करने के बाद, बस इसे सामान्य रूप से सहेजें, जैसे :w newfilename


8
ठीक है कि मैं क्या देख रहा था। किसी और के लिए, इस तरह से आप अभी तक बिना सहेजे गए फ़ाइलों को पुनर्प्राप्त करते हैं। उपरोक्त विधियाँ ठीक काम करती हैं यदि कोई फ़ाइल पहले से मौजूद है, लेकिन आप बिना नाम वाली फ़ाइल नहीं खोल सकते।
एरिक हू

17

आपको .swp को पुनर्प्राप्त करने के लिए मूल फ़ाइल की आवश्यकता नहीं है। बस फ़ाइल को खोलें जैसे कि यह मौजूद है। vim .swp एक्सटेंशन वाली फ़ाइल की तलाश करेगा और उसे पुनर्प्राप्त करने की पेशकश करेगा।

उदाहरण के लिए:

$ ls -a
. .. .test.txt.swp
$ vim test.txt
[...]
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

बस इसे पुनर्प्राप्त करने के लिए R दबाएं और: फ़ाइल को wq करें

संपादित करें: ध्यान दें कि .swp फ़ाइल में केवल फ़ाइल में किए गए परिवर्तन होते हैं (टिप्पणी देखें)। इसका मतलब है कि आपको बैकअप से फ़ाइल की एक हालिया प्रति प्राप्त करनी होगी और फिर नवीनतम परिवर्तनों को पुनर्प्राप्त करने के लिए विम का उपयोग करना होगा। यदि आपके पास उस फ़ाइल की बैकअप प्रति नहीं है जो आप वास्तव में भाग्य से बाहर हैं।


2
आपके पास निश्चित रूप से मूल फ़ाइल होनी चाहिए, इसके बिना .swp फ़ाइल में डेटा बेकार है। "देखें: स्वैप-फाइल में मदद करें"। ऐसी स्थितियां हैं जहां यह मूल फ़ाइल के बिना काम करने के लिए प्रकट हो सकती है, लेकिन .swp फ़ाइल केवल जानकारी को संग्रहीत करती है और पुनर्प्राप्ति के दौरान उस जानकारी को लागू करने के लिए कुछ शुरुआती बिंदु की आवश्यकता होती है।
17

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

संपूर्ण फ़ाइल को एक ही स्वैप में संग्रहीत करना व्यर्थ होगा, हाँ, लेकिन मुझे स्वैप करने में संभावित मान दिखाई देता है (जब सक्षम किया जाता है।) उसी कारण से आप अंतर के माध्यम से संपादित करते हैं और मूल को केवल स्पष्ट रूप से सहेजते हैं, यह मेरे लिए समझ में आता है। यदि आप अलग-अलग अनुक्रम कर सकते हैं, तो एक आंशिक राशि उत्पन्न करें (आज से पहले की तारीखें -> रात्रिकालीन; रात्रिकालीन + आज = ​​वर्तमान) आदि। मैंने पाया: 'पूर्व [सेवा] `मैनुअल में, मुझे लगता है कि यह उसी तरह से काम करता है। किसी भी मामले में, सबसे महत्वपूर्ण पंक्ति है:The original file is no longer needed for recovery.
जॉन पी

ऐसा लगता है कि यह काम करता है - :preserveऔर :set cpoptions=...&एक .swp और .swo फ़ाइल को डायरेक्टरी में छोड़ देता है और या तो इससे उबरने की पेशकश करता है। vim -r <file>आप का उपयोग कर .swp और .swo के बीच चयन कर सकते हैं। इसके अतिरिक्त संपादन .swn, .swm इत्यादि उत्पन्न करते हैं, जो उस बिंदु तक स्वैप का आंशिक योग प्रतीत होते हैं। आप अपनी पसंद के संस्करण पर वापस लौट सकते हैं और संपादित कर सकते हैं (~ = कांटा) या बचा सकते हैं (~ = stash)। आखिरकार आप स्वैप फ़ाइलों को टारगेट कर सकते हैं, उनके बैकअप को डैमेज कर सकते हैं, आदि। मैं विवरण के बारे में गलत हो सकता हूं जब यह बड़ी फ़ाइलों की बात आती है - मुझे यकीन नहीं है कि यह अतिरिक्त स्वैप फ़ाइलों को कैसे प्रभावित करता है - नीचे देखें।
जॉन पी।

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

7

Vim का उपयोग करके मूल फ़ाइल खोलें, और पुनर्प्राप्ति विकल्प चुनें।


मेरे पास मूल फ़ाइल नहीं है। मेरे पास '.swp' है
zarna

1
जितना आप सोचते हैं उससे कम महत्वपूर्ण है। इसे चाहे तो खोलें।
इग्नासियो वाज़क्वेज़-अब्राम्स

7

1 स्वैप फ़ाइल को खोलने .file.swpमेंvim

2 :recoverआपकी फाइल को रिकवर करेगा


7

Vegar Westerlund और Heptite टिप्पणियों को पढ़ने के बाद, मैं जानना चाहता था कि किस बिंदु पर .swp फ़ाइल से पुनर्प्राप्त करने के लिए मूल फ़ाइल (या बैकअप) की आवश्यकता है। यहाँ क्या किया है:

मैंने 975 लाइनों की फाइल खोली, इसे लाइन 949 पर संपादित किया (एक .swpफाइल बनाकर ) और इस प्रक्रिया को मार दिया, फिर मूल को हटा दिया। $ vim Original_Fileयह पूछे जाने पर कि क्या मैं .swp »> हां से उबरना चाहता हूं; केवल पहली 68 लाइनें और अंतिम 34 लाइनें (मेरे संपादन से ऊपर 8 लाइनें शुरू) वास्तव में बरामद हुई थीं।

मैंने तब छोटी फ़ाइलों के साथ परीक्षण दोहराया: 20 से 200 लाइनों तक, .swp फ़ाइल में मूल सामग्री का 100% शामिल था । लेकिन 300 लाइनों में, पहली 68 और पिछली 18 लाइनें (मेरे संपादन में 2 पंक्तियां शुरू करने) को .swp में शामिल किया गया था।

निष्कर्ष के रूप में यह जानना अच्छा है कि vim हमेशा .swp फ़ाइलों में "हेडर" और "बॉटम" फाइल को सेव करता है। हो सकता है कि नियंत्रण के लिए एक सेटिंग हो। कितनी पंक्तियों में एक .swp होना चाहिए?

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