ย้อนกลับการย้ายไดเรกทอรีรากซ้ำ


14

ฉันมี Ubuntu Desktop ที่ใช้เป็นเซิร์ฟเวอร์ เมื่อเช้านี้ฉันย้ายรากทั้งหมดของฉันไปโดยไม่ตั้งใจ../

 root@server:/tmp/UPS/up/upsilon# mv /* ../
 mv: impossibile spostare "/dev" in "../dev": Dispositivo o risorsa occupata
 mv: impossibile spostare "/proc" in "../proc": Dispositivo o risorsa occupata
 mv: impossibile spostare "/run" in "../run": Dispositivo o risorsa occupata
 mv: impossibile spostare "/sys" in "../sys": Dispositivo o risorsa occupata
 mv: impossibile spostare "/tmp" in una sottodirectory di sé stessa, "../tmp"
 root@server:/tmp/UPS/up/upsilon# ls
 -bash: /bin/ls: No such file or directory

ฉันเชื่อมต่อจากระยะไกลเป็น ssh ตอนนี้ฉันไม่สามารถเข้าถึงได้อีกต่อไป ฉันไม่สามารถดู Webmin ด้วย

ดังนั้นตอนนี้ฉันไม่สามารถเริ่มระบบที่ถูกต้องได้หรือไม่ และฉันต้องเข้าสู่คอนโซลของระบบและพิมพ์คำสั่งนี้:

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*}

ขวา?

ไดเรกทอรีรากของฉันหายไปไหนและฉันจะเอามันกลับมาได้อย่างไร คำสั่งดังกล่าวจะใช้งานได้หรือไม่


10
ว้าว! นั่นเป็นความผิดพลาดที่น่าประทับใจ! :(
Sparhawk

3
ฉันเข้าใจถูกต้องหรือไม่ว่าไดเรกทอรีทำงานในเวลานั้นเป็น/อย่างไร ถ้าเป็นเช่นนั้นเมื่อฉันลองmv tempdir/ ../ฉันก็จะได้mv: ‘tempdir/’ and ‘../tempdir’ are the same fileแต่ไม่มีอะไรขยับ
Sparhawk

ครั้งต่อไปอย่าเข้าสู่ระบบในฐานะ root และถ้าคุณจะmvเพิ่ม-iสวิตช์
Braiam

1
ฉันไม่เห็นด้วย. บางครั้งคุณต้องการเข้าสู่ระบบในฐานะ root แทนที่จะเรียนรู้ที่จะใส่ 'sudo' ต่อหน้าทุกคำสั่ง อย่างไรก็ตามโปรดระวังเมื่อล็อกอินเป็น root โดยเฉพาะอย่างยิ่งกับคำสั่งลบและย้าย --- ยังมีข้อผิดพลาดเกิดขึ้นและเราเรียนรู้จากสิ่งเหล่านั้น @MaxDL: คุณสามารถกู้คืน / partion จากข้อมูลสำรองได้หรือไม่? คุณมีข้อมูลสำรองหรือไม่ คุณสามารถใช้ Dell DRAC, HP ILO หรือเครื่องมือการเข้าถึงระยะไกลอื่น ๆ เพื่อเข้าถึงคอนโซลของเซิร์ฟเวอร์โดยไม่ต้องบูตระบบปฏิบัติการหรือไม่?
Hennes

คำตอบ:


12

คุณยังไม่ได้ย้ายไดเรกทอรีราก (คุณทำไม่ได้) คุณเพิ่งย้ายเกือบทุกอย่างในไดเรกทอรีไปยังไดเรกทอรีหลักของเส้นทางที่คุณอยู่

ในการทำให้สิ่งต่าง ๆ ซับซ้อนคุณก็ต้องย้ายmvเพื่อที่จะไม่ทำงานตามที่คาดไว้ ต่อไปนี้ควรใช้งานได้ (ตราบใดที่คุณยังไม่ได้รีบูตหลังจากถามสิ่งนี้!) หากคุณยังอยู่ในไดเรกทอรีเดียวกันกับที่คุณเคยทำเมื่อคุณเลิก mv ครั้งล่าสุด

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /

หากคุณไม่มีสิ่งใดเลยเพียงแค่ละไว้จากคำสั่ง

และถ้าคุณไม่มีสิทธิ์เข้าถึง (คุณจะไม่สามารถลงชื่อเข้าใช้ใหม่ได้ในขณะที่สิ่งต่าง ๆ อยู่ในสถานะนี้) คุณจะต้องติดตั้งระบบไฟล์ภายนอก (ผ่านบางสิ่งเช่น LiveCD และติดตั้งระบบไฟล์แล้วย้ายไฟล์ คำตอบของ Braiam น่าจะช่วยได้ในส่วนนี้


สิ่งที่ฉันสับสนเป็นเส้นซึ่งแนะนำให้ผมว่าไดเรกทอรีปัจจุบันเป็นroot@server:/# ls /(ดังนั้นความคิดเห็นที่สองของฉันด้านบน)
Sparhawk

ขออภัยนั่นคือคำสั่งทั้งหมด: root @ server: / tmp / UPS / up / upsilon # mv / * ../ ฉันเชื่อมต่ออยู่ใน remotly ใน ssh ตอนนี้ฉันไม่สามารถเข้าถึงได้อีกต่อไป
MaxDL

ดังนั้นคำสั่งให้แก้ไขคือ/tmp/UPS/up/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
Sparhawk

10

หากคุณรีบูทแล้วหรือออกจากระบบคุณสามารถบู๊ตใน liveCD / USB เพื่อแก้ไขระบบของคุณ ฉันจะข้ามส่วนที่คุณรู้วิธีสร้างระบบ Live และบูตด้วย Ubuntu (แผ่นซีดีทางเลือกยังใช้งานได้เพียงแค่วางลงในรูทเชลล์):

ก่อนอื่นคุณควรติดตั้งระบบของคุณไปที่อื่นดังนั้น:

mkdir /mnt/system
mount /dev/sda1 /mnt/system

ฉันสมมติว่า/dev/sda1เป็นรากของคุณ หากคุณแยกทาง/binหรือ/usrคุณควรติดตั้งด้วย:

mount /dev/sda2 /mnt/system/usr

ตอนนี้คุณควรมาถึงไดเรกทอรีที่คุณอยู่ก่อนเกิดภัยพิบัติ:

cd /mnt/system/tmp/UPS/up/upsilon

ตอนนี้ด้วยคำสั่งที่ Oli ให้ซึ่งฉันจะคัดลอกด้วยความดัง:

mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /mnt/system/

ตอนนี้ยืนยันทุกอย่างตามลำดับ:

# ls /mnt/system/
bin boot etc home media mnt opt root sbin selinux usr var etc...

รีบูทระบบของคุณและระมัดระวังในอนาคตมากขึ้น


1

ฉันพบปัญหานี้ฉันพบว่าฉันต้องการเรียกคำสั่ง mv ดังนี้:

/tmp/UPS/up/lib/ld-linux-x86-64.so.2 --library-path /tmp/UPS/up/lib/ /tmp/UPS/up/test/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var} /

หวังว่านี่จะช่วยผู้อื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.