/usrโฟลเดอร์ของฉันต้องย้ายไปที่พาร์ติชันใหม่ ฉันจะทำสิ่งนี้โดยไม่ลบเนื้อหาได้อย่างไร
สามารถทำได้ในขณะที่ Ubuntu กำลังทำงานหรือฉันจำเป็นต้องใช้ LiveCD สำหรับสิ่งนี้หรือไม่?
/usrโฟลเดอร์ของฉันต้องย้ายไปที่พาร์ติชันใหม่ ฉันจะทำสิ่งนี้โดยไม่ลบเนื้อหาได้อย่างไร
สามารถทำได้ในขณะที่ Ubuntu กำลังทำงานหรือฉันจำเป็นต้องใช้ LiveCD สำหรับสิ่งนี้หรือไม่?
คำตอบ:
มันจะปลอดภัยที่สุดหากใช้ Live CD แต่คุณสามารถทำได้:
/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
คุณจำเป็นต้องรู้ 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
แต่มีการพิมพ์ผิดพลาดเล็กน้อย (พูดกด Enter เมื่อคุณพิมพ์เท่านั้นsudo rm -rf /mnt) อาจทำให้เกิดภัยพิบัติดังนั้นฉันจะใช้วิธีนี้ถ้าคุณมั่นใจมากในสิ่งที่คุณทำไม่สามารถจัดการกับการหยุดทำงานใด ๆ หรือไม่มี การเข้าถึงตัวเครื่องและด้วยเหตุนี้จึงไม่สามารถบูตจากซีดีสดหรืออุปกรณ์ USB สด
rsyncแทน?
rsync -avzด้วย Rsync ให้คุณรีสตาร์ทสำเนาและโดยทั่วไปควรใช้เมื่อย้ายระหว่างพาร์ติชันอุปกรณ์บล็อกหรือเครื่อง
cpห้ามใช้ มันไม่ได้เก็บรักษาลิงก์ถาวร สิ่งนี้จะทำให้การอัปเกรดแพ็คเกจหยุดชะงัก ตัวอย่างเช่น/usr/bin/s2pและ/usr/bin/psedเป็นไฟล์เดียวกัน การย้ายด้วยcpจะเป็นการสร้างไฟล์อิสระ 2 เวอร์ชัน ทำrsync -aHแทน
rsync -avH a/ bแตกต่างจากrsync -avH a bการคัดลอกเนื้อหาของโฟลเดอร์a(นั่นคือa/*) ในกรณีแรกและตัวโฟลเดอร์เองในวินาที ตรวจสอบให้แน่ใจว่าคุณใช้เครื่องหมายทับที่นี่
เนื่องจากห้องสมุดส่วนใหญ่ที่ใช้อยู่ใน / usr ฉันจะไม่แนะนำให้ย้ายไดเรกทอรีนี้ในขณะที่ใช้งาน Ubuntu ที่จริงแล้วคุณอาจได้รับข้อความแสดงข้อผิดพลาดเมื่อพยายามทำเช่นนี้ ดังนั้นที่ดีที่สุดคือการใช้ LiveCD
คุณสามารถใช้หลายวิธีในการย้าย / คัดลอกไฟล์ cp, rsync ฯลฯ ที่คุณต้องการตรวจสอบให้แน่ใจว่ามีการสร้าง symlink และไม่ได้คัดลอก cp และ rsync ทั้งคู่มีตัวเลือกสำหรับสิ่งนี้
หลังจากย้ายไฟล์ไปยังพาร์ติชันอื่นคุณต้องเพิ่มการเมานท์อื่นใน / etc / fstab เพื่อเมาท์พาร์ติชั่นใหม่ไปที่ / usr
ความสนใจ: ฉันไม่รู้ว่าฉันกำลังทำอะไรอยู่ฉันแค่คัดลอกคำสั่งและทำตามที่คนอื่นแนะนำ นี่อาจเป็นวิธีที่ไม่ถูกต้องที่จะทำ แต่มันได้ผลสำหรับฉัน (อย่างน้อยก็ตอนนี้)
นี่คือวิธีที่ฉันทำ (ทำตามคำตอบของ Hamish และความคิดเห็น):
คัดลอกไฟล์ทั้งหมดที่พาร์ติชันที่สร้างขึ้นใหม่ (แทนที่ด้วยตำแหน่งของพาร์ติชันของคุณมันควรมีลักษณะคล้ายกับของฉัน):
rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c
ณ จุดนี้ฉันรู้ว่ามันคัดลอกทุกอย่างลงใน/usrโฟลเดอร์บนพาร์ติชันซึ่งไม่ทำงานดังนั้นฉันจึงคัดลอกทุกอย่าง (ที่มีตัวจัดการไฟล์) จากโฟลเดอร์นั้นไปยังรูทของพาร์ติชันและการลบที่ว่างเปล่า โฟลเดอร์หลังจากนั้น
แก้ไข/etc/fstab(เช่นเดียวกับคำตอบของ Hamish แน่นอนแทนที่ด้วย UUID ของคุณ)
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
ขั้นตอนที่ไม่ฉลาดนัก: ฉันเปลี่ยนชื่อ/usrพาร์ทิชันที่เมาท์อยู่ในปัจจุบันเป็น/usrBACKUPเพียงเพื่อให้ฉันรู้ว่าเมื่อฉันรีบูตระบบจริงๆแล้วมันรีบูตเป็นพาร์ติชันที่สร้างขึ้นใหม่ไม่ใช่พาร์ทิชันเก่า . หลังจากนั้นทุกอย่าง glitched บนหน้าจอและฉันมีที่กำลังจะปิดโดยในระยะยาวการกดปุ่มเพาเวอร์(อัจฉริยะเป็นฉัน) ข้ามขั้นตอนนี้หากคุณไม่ต้องการที่จะผิดพลาดระบบของคุณ
รีบูทระบบ
หลังจากรีบูตเครื่องให้เปิดการตรวจสอบระบบหรือแอปพลิเคชันที่คล้ายกันเพื่อดูว่า/usrมีการติดตั้งพาร์ติชันใหม่ของคุณหรือไม่และตรวจสอบความปลอดภัยว่าทุกอย่างเป็นไปตามแผนที่วางไว้หรือไม่
หลังจากตรวจสอบว่าทุกอย่างเรียบร้อยคุณสามารถลบ/usrพาร์ติชันเก่าของคุณ ฉันจะเก็บไว้ในกรณีที่มีบางอย่างผิดปกติ
sudo mount -aอนุญาตให้มันทำงานต่อไปได้?
rsyncเหมาะกว่านี้มากกว่าcp