कैसे एक नए विभाजन को स्थानांतरित करने के लिए?


26

मेरे /usrफ़ोल्डर को एक नए विभाजन में स्थानांतरित करने की आवश्यकता है। मैं सामग्री को मिटाए बिना यह कैसे कर सकता हूं?

क्या यह तब किया जा सकता है जब उबंटू चल रहा हो, या मुझे इसके लिए लाइवसीडी का उपयोग करने की आवश्यकता है?

जवाबों:


27

लाइव सीडी का उपयोग करना सबसे सुरक्षित होगा, लेकिन आप ऐसा कर सकते हैं:

  • सभी फ़ाइलों को एक नए विभाजन में कॉपी करें, यह सुनिश्चित करते हुए कि /usrजब आप ऐसा कर रहे हैं तो सामग्री में बदलाव न करें।
  • संपादित करें /etc/fstabताकि /usrअगले रिबूट पर माउंट हो जाए
  • रिबूट
  • पुरानी फ़ाइलों को हटा दें

प्रत्येक चरण पर विवरण के लिए नीचे देखें।

ध्यान दें कि आप /usrचलते समय नए विभाजन को माउंट नहीं कर सकते हैं क्योंकि इसमें बहुत सारी फाइलें /usrहोंगी जो खुली होंगी।

फाइलों को कॉपी करना

मैं उपयोग करूंगा cp -a-aसंग्रह विकल्प है। से आदमी पेज :

-a, --archive
          same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-P, --no-dereference
          never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
          preserve      the      specified      attributes       (default:
          mode,ownership,timestamps),  if  possible additional attributes:
          context, links, xattr, all
...
-R, -r, --recursive
          copy directories recursively

संपादन / आदि / fstab

आपको अपने नए विभाजन के UUID को जानना होगा। आप मैपिंग करके देख सकते हैं:

$ ls -l /dev/disk/by-uuid/

और फिर इस पंक्ति को इसमें जोड़ें /etc/fstab:

UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2

UUID को अपने UUID में बदलें, और ext4आपके द्वारा उपयोग किए जा रहे फ़ाइल सिस्टम प्रकार में परिवर्तन करें - आपको यह पता होना चाहिए कि क्या आपने विभाजन सेट किया है।

पुरानी फ़ाइलों को हटा दें

रिबूट के बाद, /usrरूट विभाजन पर पुरानी फ़ाइलों को नए विभाजन पर छिपाया जाएगा/usr । लेकिन हम पुरानी फ़ाइलों को पाने के लिए कुछ माउंट बाइंड ट्रिकरी का उपयोग कर सकते हैं और फिर उन्हें हटा सकते हैं।

$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr/*
$ sudo umount /mnt

लेकिन कुछ मामूली गलतियाँ (कहते हैं, जब आप केवल टाइप करते हैं, तो दर्ज करें मारना sudo rm -rf /mnt) आपदा का कारण बन सकता है, इसलिए मैं केवल इस पद्धति का उपयोग करूंगा यदि आप जो कर रहे थे उस पर बहुत विश्वास था, वास्तव में किसी भी डाउनटाइम से निपट नहीं सकता था, या नहीं मशीन तक भौतिक पहुंच और इसलिए एक लाइव सीडी या लाइव यूएसबी स्टिक को बंद करने में असमर्थ थे।


4
rsyncइतना बेहतर की तुलना में इस के लिए उपयुक्त हैcp
मार्को Ceppi

1
@MarcoCeppi क्या आप उस पर विस्तार कर सकते हैं? हो सकता है कि rsyncइसके बजाय उपयोग करने वाला एक भिन्न उत्तर दें ?
काज़ार्क

6
के साथ cp कमांड को बदलें rsync -avz। Rsync आपको प्रतियों को फिर से शुरू करने की अनुमति देता है और आम तौर पर विभाजन, ब्लॉक डिवाइस या मशीनों के बीच चलते समय उपयोग किया जाना चाहिए।
मार्को Ceppi

2
उपयोग न करें cp। यह हार्ड लिंक को संरक्षित नहीं करता है। यह भविष्य में पैकेज अपग्रेड को तोड़ देगा । उदाहरण के लिए /usr/bin/s2pऔर /usr/bin/psedएक ही फाइल है। साथ cpले जाने से उस फ़ाइल के 2 स्वतंत्र संस्करण बन जाएंगे। rsync -aHइसके बजाय करो ।
o

1
सबसे पहले, -z फ्लैग को स्किप करें - यह कम्प्रेशन को सक्षम करता है, जो दिया गया है कि आप किसी नेटवर्क पर फाइल नहीं भेज रहे हैं, यह बेकार है (सिवाय इसके कि rsync आमतौर पर इसे अनदेखा करने के लिए पर्याप्त स्मार्ट है, लेकिन फिर भी, इसे ड्रॉप कर सकते हैं) । @ AleksandarStefanović आप निश्चित रूप से वहां सामग्री चाहते हैं, न कि फ़ोल्डर, और इसका कारण यह है कि इस तरह से कुछ rsync quirks के कारण होता है: यह पहले मामले में फ़ोल्डर की सामग्री (जो है ) की नकल करते हुए और फ़ोल्डर में हीrsync -avH a/ b अलग तरीके से व्यवहार करता है। क्षण में। सुनिश्चित करें कि आप यहाँ स्लैश का उपयोग करते हैं। rsync -avH a baa/*
दारेल

7

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

आप फ़ाइलें cp, rsync आदि को स्थानांतरित / कॉपी करने के लिए कई संभावनाओं का उपयोग कर सकते हैं। आप यह सुनिश्चित करना चाहते हैं कि कोई भी सहानुभूति बनाई जाए और न केवल प्रतिलिपि बनाई जाए। cp और rsync दोनों के पास इसके लिए विकल्प हैं।

फ़ाइलों को दूसरे विभाजन में ले जाने के बाद आपको नए विभाजन को / usr पर माउंट करने के लिए / etc / fstab में एक और माउंट जोड़ने की आवश्यकता है।


2

ध्यान दें: मुझे पता नहीं है कि मैं क्या कर रहा हूं, मैं सिर्फ कमांड की नकल कर रहा हूं और दूसरों द्वारा सुझाए अनुसार कर रहा हूं। यह करने का गलत तरीका हो सकता है, लेकिन यह मेरे लिए काम करता है (अभी के लिए, कम से कम)।

इस तरह मैंने इसे किया है (हामिश के जवाब और टिप्पणियों के बाद):

  1. सभी फ़ाइलों को नए बनाए गए विभाजन की प्रतिलिपि बनाएँ (अपने विभाजन के स्थान से बदलें, यह मेरे जैसा दिखना चाहिए):

    rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
    
  2. इस बिंदु पर मैंने महसूस किया है कि इसने /usrविभाजन पर फ़ोल्डर में सब कुछ कॉपी किया है , जो काम नहीं कर रहा है , इसलिए मैंने उस फ़ोल्डर से विभाजन के मूल में सब कुछ (फ़ाइल प्रबंधक के साथ) कॉपी किया, और उस खाली को हटा दिया फ़ोल्डर बाद में।

  3. संपादित करें /etc/fstab(हामिश के उत्तर के रूप में, निश्चित रूप से, अपने यूयूआईडी से बदलें)

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. एक ऐसा कदम, जो बहुत समझदारी भरा नहीं था: मैंने वर्तमान में घुड़सवार का नाम बदल दिया /usr विभाजन/usrBACKUP , ताकि मुझे पता चले कि, जब मैं सिस्टम को रिबूट करता हूं, तो यह वास्तव में नए बनाए गए विभाजन में रीबूट होता है, और पुराना नहीं । उसके बाद, स्क्रीन पर सब कुछ गड़बड़ हो गया, और मुझे इसे लंबे समय तक पावर कुंजी (प्रतिभा के रूप में मैं कर रहा था) द्वारा बंद करना पड़ा । यदि आप अपने सिस्टम को गड़बड़ नहीं करना चाहते हैं तो इस चरण को छोड़ दें।

  5. सिस्टम को रिबूट करें

  6. रिबूट करने के बाद, सिस्टम मॉनिटर या समान एप्लिकेशन खोलें, यह देखने के लिए कि क्या आपका नया है /usr विभाजन माउंट है, और सुरक्षा-जांच के लिए कि क्या सब कुछ योजना के अनुसार चला गया है।

  7. यह जांचने के बाद कि सब कुछ ठीक है, आप अपने पुराने /usrविभाजन को हटा सकते हैं । मैं सिर्फ कुछ गलत होने की स्थिति में मेरा रखूँगा।


5 साल पुराने प्रश्न का उत्तर क्यों दिया जाता है अगर उसके पास पहले से ही एक स्वीकृत उत्तर है और आप नहीं जानते कि आप किस बारे में बात कर रहे हैं?
सेमीक्स

2
@ सेमी क्योंकि मुझे लगा कि अन्य उत्तर अपूर्ण थे - मुझे एक उत्तर से पूर्ण समाधान नहीं मिला, और किसी भी उत्तर के पास उनके लिए पर्याप्त विवरण नहीं था। मुझे लगा कि इस सवाल पर आने वाले उपयोगकर्ताओं को मदद की ज़रूरत होगी। इससे कोई फर्क नहीं पड़ता कि यह पाँच साल पुराना है अगर किसी को अभी भी इस प्रश्न से जानकारी की आवश्यकता है।
अलेक्जेंडर स्टीफनोविक

1
हर कोई अपने सिस्टम को रिबूट क्यों कर रहा है? sudo mount -aइसे चालू रखने की अनुमति नहीं देनी चाहिए ?
हेगन वॉन एटिजन

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