เมื่อพีซีแก้ไขไฟล์มันจะลบไฟล์ต้นฉบับหรือไม่


55

หากcode.txt(หรือไฟล์อะไรก็ตาม) ได้รับการแก้ไขและบันทึกฉันมีสองแนวคิดว่าพีซีจะจัดการกับกระบวนการได้อย่างไร:

  1. พีซีจะลบcode.txtอย่างสมบูรณ์และสร้างใหม่code.txt(เวอร์ชันที่แก้ไข) จากศูนย์

  2. code.txtเครื่องคอมพิวเตอร์ที่เป็นส่วนหนึ่งของการแก้ไขฐานสิบหกของ ดังนั้นจึงไม่มีการลบเกิดขึ้น

แนวคิดใดที่แสดงถึงการทำงานของคอมพิวเตอร์


ทักทาย! ทำงานจากคำตอบที่ยอดเยี่ยมของผู้ใช้ Grawity ต่อไปนี้เป็นคำถามที่ชี้แจง:

18
@HaakonDahl คำถามที่ชัดเจนคืออะไร คุณไม่ได้โพสต์อะไรเลย
The Great Duck

Dangit ต้องรอจนกว่าฉันจะกลับมาบนพีซีของฉัน แต่สิ่งสำคัญคือฮาร์ดแวร์ - ระบบไฟล์ระบบปฏิบัติการหรือแอพ และแอพอะไร

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

1
การลงคะแนนเพื่อปิดคำถามนี้กว้างเกินไป ทุกอย่างขึ้นอยู่กับระบบปฏิบัติการซอฟต์แวร์และความสามารถของระบบไฟล์พื้นฐาน
JakeGould

คำตอบ:


121

อาจเป็นได้ - ขึ้นอยู่กับโปรแกรมแก้ไขข้อความที่ใช้

แนวคิดของ 'ไฟล์ข้อความ' ไม่ได้อยู่ในคอมพิวเตอร์ - ระบบปฏิบัติการแต่ละระบบอาจจัดการไฟล์ต่างกันและโปรแกรมแก้ไขข้อความแต่ละไฟล์อาจใช้ไฟล์เหล่านั้นแตกต่างกัน

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

(ฉันคิดว่าการอัปเดตแบบ in-place นั้นพบได้ทั่วไปในโปรแกรมแก้ไข hex โดยที่การแก้ไขส่วนใหญ่จะไม่แทรก / ลบไบต์ แต่เปลี่ยนเฉพาะตำแหน่งที่มีอยู่ดังนั้นจึงไม่จำเป็นต้องเขียนไฟล์ใหม่ทั้งหมด)

แม้จะมีโหมดการทำงานที่สาม - ตัวแก้ไขอาจสร้างสำเนาสำรองของไฟล์เก่าก่อนจากนั้นจึงเขียนข้อมูลใหม่ลงในไฟล์โดยตรง


นอกจากนี้ยังขึ้นอยู่กับระบบไฟล์ที่เก็บไฟล์ ด้วยระบบไฟล์แบบดั้งเดิมส่วนใหญ่หากโปรแกรมขอให้เขียนไฟล์ที่มีอยู่ระบบไฟล์จะเขียนทับข้อมูลเก่าแบบเดิมแทน

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

ในระบบไฟล์บางระบบ (เช่น Btrfs หรือ ext4) นี่เป็นคุณสมบัติเสริม ในอื่น ๆ (เช่นระบบไฟล์โครงสร้างบันทึก) มันเป็นส่วนหนึ่งของการออกแบบหลัก


30
มันไม่ใช่แค่ในระดับระบบไฟล์ ตัวอย่างเช่นหน่วยความจำแฟลชต้องล้างบล็อคก่อนจึงจะสามารถเขียนได้ ดังนั้นในทางปฏิบัติมันมักจะเขียนไฟล์โดยการเขียนการเปลี่ยนแปลงใหม่ไปยังบล็อกใหม่และทำให้มันใช้ไม่ได้บนบล็อกเก่า ด้วยการจัดการสิ่งของแบบนี้โดยอัตโนมัติด้วยตัวอุปกรณ์เองระบบปฏิบัติการก็สามารถใช้ระบบไฟล์ฮาร์ดไดรฟ์ปกติได้
trlkly

7
@trlkly: อุปกรณ์หน่วยความจำแฟลชที่ทันสมัยทั้งหมดแบ่งออกเป็นพื้นที่ลบซึ่งเป็นคำสั่งที่มีขนาดใหญ่กว่าดิสก์เซกเตอร์และไม่สามารถรีไซเคิลส่วนใดส่วนหนึ่งของภูมิภาคนี้ได้โดยไม่ต้องลบทั้งหมด ดังนั้นหากภูมิภาคมีค่าข้อมูลล้าสมัย 32 ส่วนและ 224 ส่วนของข้อมูลที่มีประโยชน์ก็จะต้องคัดลอกข้อมูลที่มีประโยชน์ 224 ส่วนที่อื่นก่อนที่จะสามารถเพิ่มพื้นที่ว่างจากส่วนที่ล้าสมัยใด ๆ ระบบปฏิบัติการสมัยใหม่ใช้คำสั่ง "trim" เพื่อระบุเซ็กเตอร์ของดิสก์ที่สามารถละทิ้งเนื้อหาได้หากบล็อกที่พวกเขาเปิดอยู่นั้นถูกนำกลับมาใช้ใหม่
supercat

ผู้แก้ไขบางคนเลือกในขณะใช้งานซึ่งพฤติกรรมที่จะใช้ (เช่นขึ้นอยู่กับว่าไฟล์มีรายการไดเรกทอรีเพียงรายการเดียวหรือหลายรายการ)
Toby Speight

2
บรรณาธิการหลายคนจะอ่านไฟล์ในหน่วยความจำและทำการเปลี่ยนแปลงทั้งหมดที่นั่น (อาจมีการบันทึกสำเนาการทำงานต่อเนื่องแบบออทิสติกให้กับแบบอื่นโดยอัตโนมัติ) ไฟล์ต้นฉบับจะไม่เปลี่ยนแปลงเลยจนกว่าคุณจะบันทึกการเปลี่ยนแปลงเช่นด้วยคำสั่งของ vi: w
jamesqf

4
@jamesqf: คำถามคือเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อไฟล์ "แก้ไขและบันทึก " ...
grawity

6

เนื่องจากคุณกำลังพูดถึง "การบันทึกไฟล์" ดังนั้นไฟล์จะไม่ถูกแก้ไขบนดิสก์

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

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

ตัวเลือกที่ 1: ไฟล์ต้นฉบับถูกเปลี่ยนชื่อดังนั้นทั้งรายการไดเรกทอรีดั้งเดิมและข้อมูลต้นฉบับจะยังคงอยู่บนดิสก์ การเปลี่ยนชื่ออาจเช่นเปลี่ยนคำต่อท้ายไฟล์เป็น.bak(ลบ.bakไฟล์ก่อนหน้าใด ๆโดยปกติ) จากนั้นจะสร้างไฟล์ใหม่และเขียนข้อมูลจากหน่วยความจำที่นั่น

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

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

ดังนั้นทฤษฎีของคุณ 1 จึงใกล้เคียงกับสิ่งที่ผู้แก้ไขส่วนใหญ่ทำ


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

ดังนั้นทฤษฎีของคุณ 2 จึงเป็นไปได้ในบางกรณี แต่โปรแกรมแก้ไขข้อความทั่วไปและไม่ทำเช่นนั้น


1
"เนื่องจากคุณกำลังพูดถึง" การบันทึกไฟล์ "ดังนั้นไฟล์จะไม่ถูกแก้ไขบนดิสก์" - ฉันคิดว่าเมื่อใดก็ตามที่คุณ "เปิด" ไฟล์แก้ไขและเขียนการเปลี่ยนแปลงกลับสู่ดิสก์คุณจะ "บันทึกไฟล์" โดยไม่คำนึงว่าไฟล์นั้นเป็น "เขียนทับ" (เขียนทับ) หรือไฟล์เก่า ถูกลบหรือเปลี่ยนชื่อและสร้างไฟล์ใหม่ ในบางกรณีคุณมักจะตัดสินใจที่จะ "บันทึกการเปลี่ยนแปลง" หรือ "ยกเลิกการเปลี่ยนแปลง"
Kevin Fegan

@KevinFegan ดีคุณสามารถเปิดไฟล์ในดิสก์ที่เหมาะสมหรือแก้ไข hex ที่แก้ไขเนื้อหาและบันทึกการเปลี่ยนแปลง หรือคุณอาจเปิดไฟล์ฐานข้อมูล (เช่นไฟล์ฐานข้อมูล SQLite) และแก้ไขฐานข้อมูลและมีการเปลี่ยนแปลงที่ทำกับไฟล์ ดังนั้นการเปิดไฟล์เพื่อแก้ไขอาจหมายถึงการแก้ไขไฟล์ในสถานที่ แต่ "การบันทึกไฟล์" มักจะหมายถึงการสร้างไฟล์ใหม่และทางเลือกอื่น ๆ เหล่านี้มีการตั้งชื่อที่แตกต่างกันสำหรับการบันทึกการเปลี่ยนแปลง
hyde

4

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

อย่างไรก็ตามหลังจากช่วงเปลี่ยนศตวรรษเราย้ายไปที่ LBA ดังนั้นตอนนี้ระบบปฏิบัติการจะอ้างอิงบล็อก "ตรรกะ" ที่ต้องการอ่านหรือเขียน ตัวฮาร์ดไดรฟ์ตอนนี้มีความฉลาดในการสับเปลี่ยนข้อมูลรอบด้านหลังของระบบปฏิบัติการโดยไม่สังเกตเห็น นี่หมายถึงความน่าเชื่อถือที่ดีขึ้นเนื่องจากส่วนที่ล้มเหลวในการตรวจสอบสามารถย้ายไปยังที่ตั้งทางกายภาพใหม่โดยไม่กระทบต่อความรู้ของระบบปฏิบัติการเกี่ยวกับที่ตั้งของข้อมูลนั้น

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

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

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

จากข้อมูลดังกล่าวทฤษฎีที่ 1 คือสิ่งที่เกิดขึ้นทางเทคนิคในระดับการเขียนโปรแกรมประยุกต์อย่างน้อยที่สุดโดยค่าเริ่มต้นเนื่องจากมีโหมด "เขียนด้วยการผนวก" เพื่อหลีกเลี่ยงการล้างเนื้อหาไฟล์ ระบบปฏิบัติการจะนำเสนอการเปลี่ยนแปลงที่จะทำให้เหมือนทฤษฎี 2 แต่ถูกตีพิมพ์ผ่าน LBA ตัวไดรฟ์นั้นอาจทำสิ่งที่ผสมผสานระหว่างทฤษฎี 1 กับทฤษฎี 2

อ๋อ มันซับซ้อนและขึ้นอยู่กับผู้ผลิต / OS-Developer / application-developer มาก อย่างไรก็ตามความซับซ้อนทั้งหมดนี้มีวัตถุประสงค์เพื่อให้การจัดเก็บข้อมูลมีความน่าเชื่อถือมากขึ้นในขณะที่ปรับปรุงการใช้พลังงาน / อายุการใช้งานแบตเตอรี่


3

ขึ้นอยู่กับ AFAIK Microsoft Word เมื่อบันทึก.doc(ไม่.docx) ไฟล์ที่เปิดใช้งานตัวเลือกการบันทึกอย่างรวดเร็วผนวกการเปลี่ยนแปลงที่ทำกับเอกสารตั้งแต่บันทึกไฟล์ที่มีอยู่เดิม


1

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

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


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

ถ้าซอฟต์แวร์ถูกออกแบบมาให้ทำโดยเฉพาะมันก็เป็นไปได้ แต่เท่าที่ฉันรู้ว่านี่เป็นวิธีการทำงานของทั้งที่เก็บข้อมูลระยะยาวและ RAM
GigaJoules

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

1

หวังว่านี่ไม่ใช่การซ้ำซ้อนข้อมูล / พื้นหลังเพิ่มเติมเล็กน้อย

พีซีมักจะไม่สามารถควบคุมวิธีการแก้ไขไฟล์ได้มาก แต่เป็นแอพพลิเคชั่นที่ทำ

ตัวอย่างของวิธีที่แอพบางตัวอาจจัดการแก้ไข:

Notepad โหลดเอกสารทั้งหมดลงในหน่วยความจำแล้วบันทึกเอกสารทั้งหมดลงในเอกสารต้นฉบับของคุณ (หรือเอกสารใหม่ที่คุณระบุ)

เกือบบรรณาธิการเล็กอื่น ๆ ทั้งหมดจะบันทึกไฟล์ "ใหม่" ในขณะที่คุณแก้ไขแล้วคัดลอกไปที่เอกสารต้นฉบับของคุณลบเมื่อคุณ "บันทึก"

เครื่องมือแก้ไขเอกสารขนาดใหญ่ที่คุณอาจใช้แก้ไขหนังสือมักจะอ่าน / แก้ไขส่วนของเอกสารเนื่องจากสามารถแก้ไขเอกสารที่ใหญ่กว่าหน่วยความจำได้ สิ่งเหล่านี้อาจแก้ไขเอกสาร "ในสถานที่" พวกเขาอาจเขียนใหม่หนึ่งหน้าและออกจากที่เหลือคนเดียว สิ่งเหล่านี้มักจะมีการจัดทำดัชนีบนดิสก์ที่ซับซ้อนกว่าไฟล์. txt แบบธรรมดาที่จะทำให้เกิดพฤติกรรมนี้

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

ผู้แก้ไขส่วนใหญ่สามารถกำหนดค่าให้ปล่อยเวอร์ชันเดิมที่ไม่มีการแตะต้องและสร้างใหม่พร้อมการเปลี่ยนแปลงของคุณ (เก็บเวอร์ชันเก่าไว้)

ในส่วนของคำถามของคุณเกี่ยวกับสิ่งที่ "พีซี" ทำระบบปฏิบัติการบางระบบจะจดจำไฟล์ทุกเวอร์ชันและสร้างใหม่เสมอ วันนี้ค่อนข้างหายาก แต่ฉันจำ "คอมพิวเตอร์ขนาดเล็ก" แบบเก่า (ตอนนี้เราเรียกเมนเฟรม) ซึ่งทุกไฟล์มีรุ่นท้ายเช่น "File.text.1" และมันจะเพิ่มไปยังรุ่นทุกครั้งที่คุณ แก้ไขมัน พฤติกรรมแบบนี้น่าจะนำไปใช้กับบางอย่างเช่นเทปไดรฟ์หรือซีดีรอมซึ่งการเขียนทับรุ่นเก่านั้นไม่สามารถทำได้อย่างสมบูรณ์


1

2 เป็นไปไม่ได้ แต่โง่เพราะเหตุผลต่าง ๆ

โปรแกรมแก้ไขไฟล์ข้อความที่เขียนอย่างดีจะ:

  1. เขียนไฟล์ที่มีชื่อแตกต่างกันและเนื้อหาใหม่ หากต้นฉบับเป็นต้นฉบับmyfile.txtใหม่อาจเป็นmyfile.txt.new
  2. ให้ 1. สำเร็จเปลี่ยนชื่อต้นฉบับเป็นไฟล์สำรองข้อมูลพูด myfile.txt~
  3. เปลี่ยนชื่อไฟล์ใหม่เป็นชื่อเดิม myfile.txt
  4. หากทุกอย่างสำเร็จให้ลบไฟล์สำรอง บรรณาธิการหลายคนยังคงทิ้งมันไว้ดังนั้นผู้ใช้สามารถกู้คืนได้ในไม่ช้าหากเขา / เธอทำงานออกมาว่าสิ่งที่เขา / เธอทำกับบรรณาธิการไม่ใช่สิ่งที่เขา / เธอต้องการจะทำ

หากคอมพิวเตอร์ขัดข้องหรือมีที่ว่างบนดิสก์ในระหว่างด้านบนไม่มีสถานการณ์ที่ทั้งไฟล์เก่าและไฟล์ใหม่สูญหายหรือบันทึกเพียงบางส่วนเท่านั้น


พฤติกรรมที่ถูกตัดทอนในสถานที่และเขียนใหม่ของตัวแก้ไขข้อความจำนวนมากสำหรับระบบปฏิบัติการที่ไม่ใช่ของ IBM / ไม่ใช่ของ Microsoft ในช่วงครึ่งศตวรรษที่ผ่านมาไม่ใช่ "โง่"
JdeBP

1

คำตอบสั้น ๆ

ขึ้นอยู่กับโปรแกรมแก้ไขซอฟต์แวร์ / ไดรเวอร์พื้นฐานพื้นที่เก็บข้อมูลของคุณ


คำตอบ Paranoiac

สามารถกู้คืนได้เว้นแต่คุณจะลบออกอย่างถาวร


คำตอบที่ยาว

คำถามของคุณไม่มีข้อมูล (ซอฟต์แวร์ฮาร์ดแวร์ ฯลฯ ) ดังนั้นแทนที่จะตอบตัวเองฉันจะช่วยคุณตอบคำถามด้วยตัวเอง

ขึ้นอยู่กับปัจจัยบางประการ:

  1. ตัวแก้ไข : หากซอฟต์แวร์ตัวแก้ไขแทนที่บล็อกของไฟล์เดียวกันแสดงว่าอาจถูกเขียนใหม่ และสิ่งนี้อาจขึ้นอยู่กับการตั้งค่าโปรแกรมแก้ไขและประเภทไฟล์ โปรดทราบว่าคำนั้นอาจถูกทำให้เป็นตัวเอียง แม้ว่าตัวแก้ไขจะเขียนไฟล์ซ้ำ แต่ก็ยังสามารถคงอยู่ได้โดยไม่ถูกแตะต้อง (อ่านประเด็นต่อไป)

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

  3. การจัดเก็บ :

    • พื้นที่เก็บข้อมูลสามารถเขียนบล็อกที่มีการเปลี่ยนแปลงในเซ็กเตอร์ใหม่และทำเครื่องหมายบล็อกเก่าเป็น "ฟรี" จากนั้นไฟล์จะยังคงอยู่ในหน่วยความจำ (และสามารถกู้คืนได้) เว้นแต่ไฟล์นั้นจะถูกเขียนทับโดยไฟล์อื่น ตัวอย่างคือการจัดเก็บข้อมูล SSD ที่ทันสมัยซึ่งอาจทำในระดับฮาร์ดแวร์

    • มีวิธีการกู้คืนข้อมูลจากแผ่นแม่เหล็กทั่วไปกล HDD ยิ่งเมื่อข้อมูลที่ได้มีการเขียนทับ และมี บริษัท ผู้เชี่ยวชาญอยู่ด้วย

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


จะแน่ใจได้อย่างไรว่าไฟล์ที่ถูกลบนั้นถูกลบออกจากที่จัดเก็บจริง ๆ ?

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


1

พฤติกรรมหนึ่งที่ไม่มีใครได้กล่าวถึงยังเป็นพฤติกรรมที่เกี่ยวข้องของระบบปฏิบัติการ MS Windows บางรุ่นที่เกี่ยวข้องกับระบบไฟล์ที่ใช้งาน

พฤติกรรมนี้: เมื่อคุณเปลี่ยนชื่อหรือลบไฟล์หากคุณสร้าง (สร้างใหม่) ไฟล์ (ใหม่) ที่มีชื่อเดียวกันภายใน 15 วินาทีหลังจากที่ไฟล์ต้นฉบับถูกลบ (หรือเปลี่ยนชื่อ) วันที่สร้าง / การประทับเวลาจะถูกคัดลอกจากไฟล์ต้นฉบับ โดยพื้นฐานแล้วไฟล์ใหม่ "จะกลายเป็น" ไฟล์เก่า / ต้นฉบับ

ในกรณีนี้มันไม่สำคัญว่าแอปพลิเคชันจะบันทึกการเปลี่ยนแปลงของไฟล์ด้วยวิธีที่ # 1 ของคุณ: การสร้างไฟล์ใหม่ด้วยชื่อเดียวกันหรือโดยวิธีที่ # 2 ของคุณ: แก้ไข / อัปเดตไฟล์ให้เข้าที่ (ไฟล์ ไม่ถูกลบ) ไม่ว่าจะด้วยวิธีใดไฟล์สุดท้ายจะมีลักษณะเกือบทุกอย่างเช่นไฟล์ต้นฉบับ สิ่งเดียวคือมันมีแนวโน้มที่จะครอบครองพื้นที่ไดรฟ์ทางกายภาพที่แตกต่างกัน (กลุ่ม / ภาค) และรายการไดเรกทอรีสำหรับไฟล์จะอยู่ในตำแหน่งที่แตกต่างกัน

อย่างที่ฉันบอกไปนี่เป็นพฤติกรรมของ MS Windows / ระบบไฟล์บางรุ่น ฉันไม่ทราบว่า Windows รุ่นใดและระบบไฟล์นี้เริ่มทำงานเมื่อใดและยังคงเป็นเวอร์ชั่นล่าสุดอยู่หรือไม่ ถ้าฉันต้องเดาฉันจะบอกว่ามันถูกนำมาใช้ใน Windows NT และ Windows XP และยังคงเป็นพฤติกรรมของ Windows 10 และ (ยังเดาได้) พฤติกรรมนี้ต้องการระบบไฟล์ Fat32 หรือ NTFS (และอาจใหม่กว่า)


ที่จริงแล้วมันมีความสำคัญเนื่องจาก NTFS รองรับการเชื่อมโยงอย่างหนักและหนึ่งในความแตกต่างที่รู้จักกันดีระหว่างวิธีการเหล่านี้คือผลกระทบต่อไฟล์ที่เชื่อมโยงหลายเท่า ระบบไฟล์ทันเนลมีมาตั้งแต่ Windows NT 5.0 เป็นอย่างน้อย
JdeBP

@JdeBP - ใช่เราเห็นด้วย นั่นเป็นเหตุผลที่ฉันพูด # 1) "เกือบ" ใน "ไฟล์สุดท้ายดูใน (เกือบ) ทุกอย่างเช่นไฟล์ต้นฉบับ" และ # 2) รายการไดเรกทอรีในสถานที่ที่แตกต่างกัน
Kevin Fegan

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