Score:3

จะเกิดอะไรขึ้นถ้าเราทำ rm -rf ../**? เราสามารถกู้คืนข้อมูลได้หรือไม่?

ธง us
xxz

ฉันทำสิ่งที่ชอบ:

$ ซีดี /A/B/
$ rm -rf ./*
$ rm -rf ../**

เนื่องจากปัญหาด้านเครือข่าย ระบบของฉันถูกตัดการเชื่อมต่อจาก Ubuntu เมื่อฉันกลับมาไม่มีไฟล์หรือโฟลเดอร์ใน /อ โฟลเดอร์

user535733 avatar
cn flag
การใช้ `rm` เพื่อทดสอบกับตำแหน่ง `.` และ `..` ดูเหมือนจะเป็นวิธีที่โง่เขลาในการตรวจสอบว่าตำแหน่งเหล่านั้นคืออะไรและจะใช้อย่างไร มีหลายวิธีที่ดีกว่าและไม่ทำลายการเรียนรู้เกี่ยวกับพวกเขา
jp flag
`*` ที่สองใน `../**` ซ้ำซ้อน `*` หมายถึงไฟล์และโฟลเดอร์ทั้งหมดที่ตรงกับรูปแบบใดๆ เช่น. `a*b` จะเป็นอะไรก็ได้ที่ขึ้นต้นด้วย a และลงท้ายด้วย b เมื่อคุณพูดว่า `**` คุณกำลังพูดว่า "จับคู่อักขระใดก็ได้ 0 ตัวขึ้นไป และจับคู่อักขระใดก็ได้ 0 ตัวขึ้นไป" แม้ว่า `**` จะจับคู่ไดเร็กทอรีย่อยทั้งหมด แต่ `rm -r` ก็จัดการไปแล้ว
code_dredd avatar
cn flag
ขาดการใช้ซอฟต์แวร์นิติวิทยาศาสตร์ดิจิทัลสำหรับการกู้คืนข้อมูล ไม่ ไม่มีอะไรที่คุณสามารถทำได้เพื่อกู้คืนข้อมูลที่ได้รับผลกระทบ สิ่งนี้คล้ายกับการกด Shift+Del ใน Windows - ไม่มีถังรีไซเคิลให้ไปที่ โดยทั่วไปแล้ว การตรวจสอบเอกสารประกอบของคำสั่งจะเป็นประโยชน์ก่อนที่จะทำการทดลองที่มีข้อมูลของคุณเป็นเดิมพัน **TL;DR:** คุณทำพลาด :(
marcelm avatar
cn flag
ชื่อคำถามถามเกี่ยวกับ `./*` แต่เป็น `../**` ที่ทำให้เกิดปัญหา OPs ควรแก้ไขชื่อคำถามเพื่อให้สะท้อนให้เห็นได้ดีขึ้น (อยากแก้ไขแต่กระทู้ติดค้างรอการแก้ไขมาระยะหนึ่งแล้ว)
ng flag
ฉันดูเหมือนจะจำคำเตือนที่ชัดเจนในหนังสือ Unix เล่มแรกๆ เกี่ยวกับการไม่ทำสิ่งนี้ โดยเฉพาะอย่างยิ่งไม่ใช่ `sudo rm -rf /*` "ทุกอย่างเก่าเป็นใหม่อีกครั้ง"
us flag
@AdamOutler การวิเคราะห์ลูกโลก `**` ของคุณใช้ไม่ได้กับเชลล์สมัยใหม่ส่วนใหญ่ ลองดู[ที่นี่](https://stackoverflow.com/questions/28176590/what-do-double-asterisk-wildcards-mean)
jp flag
@doneal24 หากคุณ `rm -rf ../*` หรือ `rm -rf ../**` มันจะลบไฟล์และโฟลเดอร์ทั้งหมดภายในไดเร็กทอรีเหนือไดเร็กทอรีปัจจุบันของคุณ ไม่แน่ใจว่าคุณกำลังพูดถึงอะไร
us flag
@AdamOutler ลูกโลก `./*` และ './**` ถูกขยายต่างกัน `**` ไม่ได้หมายความว่าอย่างที่คุณคิด ผลการปฏิบัติในตัวอย่าง `rm -rf` นั้นไม่มี แต่คำอธิบายของคุณไม่ถูกต้อง
Score:22
ธง ng

rm ลบ ไฟล์. มันไม่ได้วางไว้ในถังขยะดังนั้นจึงไม่สามารถกู้คืนได้ด้วยวิธีการปกติ

นอกจากนี้ -rf tag ทำสองสิ่ง:

เดอะ -ร แท็กย่อมาจาก เรียกซ้ำ ซึ่งหมายความว่าจะลบเส้นทางหรือไฟล์ที่คุณระบุ และ ทุกสิ่งทุกอย่างที่อยู่ด้านล่าง

เดอะ -ฉ แท็กย่อมาจาก บังคับซึ่งหมายความว่าการดำเนินการจะเสร็จสมบูรณ์โดยไม่ต้องแจ้งให้ทราบอีก

ในการตอบคำถามของคุณเกี่ยวกับไวยากรณ์ โปรดจำไว้ว่า ./ เป็นเส้นทางของไดเร็กทอรีปัจจุบันและ ../ คือพาธของไดเร็กทอรี "พาเรนต์" (พาธเหนือไดเร็กทอรีปัจจุบัน)

ดังนั้นหากคุณวิ่ง rm -rf ../* ในขณะที่อยู่ภายใต้ /A/B/จากนั้นคุณกำลังลบทุกอย่างภายใต้ /A/.

ถ้าคุณกำลังจะใช้ rm -rfโปรดทราบว่านี่เป็นคำสั่งที่ทรงพลังมากซึ่งจะลบตามอำเภอใจและถาวร ทุกอย่าง ในเส้นทางที่คุณกำหนด

ตัวเลือกเดียวของคุณในการกู้คืนไฟล์จากการดำเนินการนี้คือเครื่องมือกู้คืนข้อมูลขั้นสูง เช่น photorec/testdisk แอปพลิเคชันเหล่านี้ไม่สามารถกู้คืนข้อมูลได้สำเร็จเสมอไป และการใช้งานอุปกรณ์ของคุณต่อไปจะลดโอกาสที่แอปพลิเคชันจะกู้คืนข้อมูลได้

เส้นทางที่ดีที่สุดคือการกู้คืนจากข้อมูลสำรอง

xxz avatar
us flag
xxz
ขอบคุณ ประเด็นของฉันคือ ฉันได้ rm ในตำแหน่ง B แต่ไฟล์ไปอยู่ใน A ได้อย่างไร ฉันไม่ได้รับมัน คุณเห็นคำถามของฉันเหมือนกัน
Nmath avatar
ng flag
แก้ไขเพื่อรวมรายละเอียดเพิ่มเติมเกี่ยวกับไวยากรณ์ของเส้นทาง ดู: https://superuser.com/a/54030
cn flag
ครั้งหนึ่งฉันตั้งใจจะพิมพ์ `rm var -rf` แต่เผลอพิมพ์ `rm /var -rf` ดังนั้นฉันจึงลบไดเร็กทอรีระบบขนาดใหญ่แทนที่จะเป็นไดเร็กทอรีย่อยของเว็บไซต์ คำสั่งนี้สามารถทำลายล้างได้มากโดยมีความผิดพลาดเพียงเล็กน้อย นอกจากนี้หากฉันไม่ได้รูทคำสั่งก็จะล้มเหลว ดังนั้นมีบทเรียนอื่น โชคดีที่มันเป็นแค่ VM
us flag
@xxz คุณมี `/A/B` เป็นไดเร็กทอรีการทำงานของคุณ แต่บอกให้ rm ลบ `../**` เช่น ไฟล์และไดเร็กทอรีหนึ่งระดับขึ้นไป
Akbarkhon Variskhanov avatar
mx flag
@Rodney นั่นคือสิ่งที่ควรเรียกใช้บางอย่างเช่น `ls -1` ในข้อโต้แย้งก่อนเสมอ
Score:10
ธง vn

เมื่อคุณวิ่ง rm -rf ../** ในไดเรกทอรี /เอ/บีมันจะกลับไปที่ไดเร็กทอรี /อ และลบทุกอย่างในนั้นตั้งแต่นั้นมา .. เป็นไดเร็กทอรีหลัก

หากคุณต้องการ "กู้คืน" ข้อมูล คุณควรพิจารณาเรียกใช้ระบบไฟล์โดยเปิดใช้งานสแนปชอตที่ใช้งานอยู่

ทั้งคู่ แซดเอฟเอส และ บีทีอาร์เอฟเอส มีการติดตั้งสแน็ปช็อตและสามารถกำหนดค่าสแน็ปช็อตอัตโนมัติได้

หากคุณกำหนดค่าสแนปชอตรายชั่วโมงสำหรับ 24 ชั่วโมงที่ผ่านมา และสแนปชอตรายวันในช่วง 14 วันที่ผ่านมา คุณสามารถย้อนกลับไปยังสแน็ปช็อตใดๆ สำหรับระบบไฟล์ที่กำหนดเมื่อใดก็ได้

การกำหนดค่าที่แน่นอนของสแน็ปช็อตอัตโนมัติจะแตกต่างกันไปตามระบบไฟล์ที่เลือก

เหตุผลที่ "ใช้งานได้จริง" คือระบบไฟล์ทั้งสองใช้ "การคัดลอกเมื่อเขียน" ซึ่งทุกการเปลี่ยนแปลงในระบบไฟล์จะถูกเขียนไปยังตำแหน่งใหม่ ดังนั้นจึงไม่มีการลบข้อมูลจนกว่าสแน็ปช็อตและตัวชี้ไปยังข้อมูลเก่าจะหมดอายุ

Score:0
ธง in

คุณกำลังลบไฟล์และโฟลเดอร์ซ้ำๆ จากโฟลเดอร์ ในกรณีหนึ่งโฟลเดอร์พาเรนต์

มันจะช่วยได้เล็กน้อยถ้าคุณบอกเราว่าคุณอยู่ที่ไหน แต่ถ้าเรื่องนี้เป็นเรื่องละเอียดอ่อน แสดงว่าคุณน่าจะอยู่ที่ไหนสักแห่งภายใต้ /home หรือ /opt หรือ /var เนื่องจากสถานที่อื่นๆ มีชื่อสำเร็จรูป คุณไม่ควรกลัวที่จะแบ่งปัน

คุณสามารถกู้คืนไฟล์จากแหล่งภายนอกได้ แต่หากคุณลบโฟลเดอร์ bin อาจมีปัญหาเกี่ยวกับความเสถียรของระบบ

คุณสามารถเมานต์ดิสก์ไปยังเครื่องอื่นเพื่อกู้คืนได้ในกรณีนี้

ฉันหวังว่าคุณจะมีข้อมูลสำรองของต้นไม้ใหญ่ ในระบบคลาวด์ (และแม้แต่ในเครื่อง) คุณสามารถถอยกลับไปใช้ดิสก์อิมเมจทั้งหมดล่าสุดและกู้คืน /home, /var และทุกอย่างที่คุณสำรองข้อมูลไว้เนื่องจากค่อนข้างไม่แน่นอน

หมายเหตุ - การกู้คืนทรีด้วย cp หรือ rsync อาจเป็นการจัดเรียงข้อมูลโดยพฤตินัย

Score:0
ธง cn

สิ่งที่คุณทำคือสิ่งนั้นจริงๆ (../**)

อย่างที่คุณเห็นคุณใส่จุดคู่ในคำสั่งที่กำหนดซึ่งจะลบทุกอย่างที่มาก่อน DIR ที่ทำงานของคุณ

ทีนี้มาดูกันว่ามันทำงานอย่างไร ลองนึกดูว่าเรามีไดเร็กทอรีตำแหน่งชื่อ XYZ

# pwd
/
#mkdir XYZ

#ซีดี XYZ

# pwd
/XYZ

ตามคำสั่งด้านบน ฉันสร้างไดเร็กทอรี ซึ่งถือได้ว่าเป็น -> /A/B

ตอนนี้เมื่อคุณเรียกใช้คำสั่งที่กล่าวถึงด้านล่าง มันจะลบเฉพาะทุกอย่างภายในไดเร็กทอรีการทำงานซึ่งก็คือ /XYZ

rm -rf ./**

แต่เมื่อคุณเรียกใช้คำสั่งเดียวกันกับไอคอนจุดคู่ คำสั่งนั้นจะเปลี่ยนตำแหน่งของไดเร็กทอรีที่กำลังทำงานอยู่และลบทุกอย่างที่อยู่ก่อนหน้า /XYZ จากที่นั่นเท่านั้น แต่เนื่องจากผู้ใช้ทำงานในโฟลเดอร์ที่มีอยู่ในไดเร็กทอรีนั้นซึ่งกำลังได้รับ ลบในเวลานั้นเฉพาะโฟลเดอร์นั้นเท่านั้นที่จะไม่ลบและทุกอย่างจะถูกลบ

มันค่อนข้างยากที่จะบอกว่าคุณสามารถกู้คืนข้อมูลของคุณได้หรือไม่ แต่คุณสามารถใช้ photorec ซึ่งช่วยให้คุณกู้คืนข้อมูลได้ แต่มันจะเปลี่ยนชื่อไฟล์ที่กู้คืนแบบสุ่ม ดังนั้นหากคุณรู้ว่ามีอะไรอยู่ในนั้น คุณก็คิดอย่างนั้น คุณสามารถกู้คืนข้อมูลของคุณได้

หวังว่านี่จะตอบคำถามของคุณ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา