Accidental rm -rf או Shift-Delete ב-Linux, macOS או Windows: התקנה מחדש מיידית לקריאה בלבד¶
מספרי חירום שונים לפי מדינה. דף זה משתמש ב-911, המספר של ארצות הברית וקנדה. מדינות רבות אחרות משתמשות ב-112, 999 או מספר אחר. מצא את המספר עבור המדינה שלך.
צופה בשוגג rm -rf, find -delete, git clean -fdx, או Windows Shift+Delete מחיקת מסדי נתונים קריטיים של ייצור, קוד מקור או קבצים אישיים מבלי לשלוח אותם לסל המיחזור או לתיקיית האשפה מעוררת פאניקה מיידית. עם זאת, גם לא rm -rf גם לא Shift+Delete למעשה מאפסת את מגזרי האחסון הבסיסיים שלך ברגע שהפקודה הושלמה: במקום זאת, מערכת ההפעלה פשוט מנתקת את ערך הספרייה, מעדכנת את יומן המטא-נתונים שלה ומסמנת את מצביעי האינוד או טבלת הקבצים הראשית (MFT) מתעד וחוסם מפות סיביות כזמינות לשימוש חוזר. מה שהורס לצמיתות את הקבצים שנמחקו הוא בכל שנייה מערכת הקבצים נשארת רכונה בקריאה-כתיבה (rwמצב ) לאחר המחיקה, בתור יומני מערכת ברקע (systemd-journald, rsyslog), מטמון דפדפן, פעילות החלפה ו-SSD TRIM / discard פקודות מחליפות במהירות את הבלוקים החדשים ששוחררו. אם המערכת שלך במקום זאת סובלת מקליקות פיזיות, סקטורים פגומים או בקר מת, עצור ועבור למדריך שלנו כשל בכונן הקשיח ושחזור נתונים, או אם כונן המצב המוצק שלך ננעל עקב בלאי של הבקר, ראה מצב SSD ו-NVMe פתאומי לקריאה בלבד ו-TRIM משבית הצלה; לטעויות עיצוב רחבות יותר או בעיות בכרטיסי מצלמה, התייעצו מחיקת קבצים בשוגג, כונן מעוצב ושחזור תמונות. אם אירוע זה כולל חבלה פלילית, סחיטה או הפסקת מערכת בטיחות חיים, התקשר למספר החירום המקומי שלך (911 בארצות הברית ובקנדה, 112 ברחבי האיחוד האירופי, 999 בבריטניה) או עיין במדריך הבינלאומי שלנו של מספרי חירום.
תעשה את זה עכשיו¶
- לחץ
Ctrl+Cמיד אם פקודת המחיקה עדיין פועלת, ואל תסגור חלונות מסוף פתוחים, עורכי טקסט, נגני מדיה או דמוני מסד נתונים: אם תוכנית פועלת כלשהי (nginx,postgres,mysqld,vim,code,python,tail, או נגן וידאו) עדיין הקובץ שנמחק פתוח בזיכרון, ליבת לינוקס או macOS שומרת על בלוקי הנתונים של הקובץ ללא פגע בדיסק עד שתהליך זה יסגור את מתאר הקובץ שלו. סגירת האפליקציה או הפעלה מחדש של המחשב ברגע זה ישחררו באופן מיידי את ספירת הפניות (i_nlink == 0) ולהפעיל ביטול הקצאת בלוק בפועל. - לפני התקנה מחדש או כיבוי ב-Linux, בדוק
/proc/<pid>/fd/כרגע כדי להציל קבצים שנמחקו שעדיין פתוחים בתהליך פועל: הפעלsudo lsof +L1(אשר מפרט את כל הקבצים הפתוחים שיש להם ספירת קישורים פחות מ-1, כלומר הם בוטלו על ידיrmכשהם עדיין פתוחים) ומיד להעתיק את התוכן הגולמי שלהם מתוך זיכרון RAM/ליבה לכונן נפרד או/dev/shm(tmpfsדיסק RAM) באמצעותcp /proc/<pid>/fd/<fd_number> /dev/shm/rescued_file. - התקן מחדש את המחיצה המושפעת לקריאה בלבד (
ro) באופן מיידי כך שגרעין מערכת ההפעלה לא יכול לכתוב עוד בייט בודד של יומני יומן או קבצים זמניים לבלוקים שלא הוקצו: - על לינוקס (
ext4,XFS,Btrfs): רוץsudo mount -o remount,ro /path/to/mountpoint(לדוגמה,sudo mount -o remount,ro /homeאוsudo mount -o remount,ro /). - אם
mount -o remount,roנכשל עםmount point is busyעל השורש שלך (/) מחיצה: הפעל את ההתקנה מחדש לקריאה בלבד חירום מיידית של הקרנל באמצעות Magic SysRq על ידי הפעלתecho u | sudo tee /proc/sysrq-trigger(מה שמאלץ את כל מערכות הקבצים הרכובות לטעון מחדש לקריאה בלבד באופן מיידי מבלי להרוג תהליכים או להמתין למנעולים פתוחים). - ב-macOS (
APFS/HFS+): רוץsudo diskutil mount readOnly /Volumes/TargetVolumeעבור אמצעי אחסון שאינם מאתחלים, או אם הקבצים היו בראש שלךDataנפח (/System/Volumes/Data), לכבות מיד את ההפעלה על ידי החזקת לחצן Touch ID / Power למשך 10 שניות כדי לעצור את זרקור הרקע (mds_stores) וfseventsdכותב. - בווינדוס (
NTFS/ReFS): אם הקבצים שנמחקו היו בכונן משני (D:,E:), פתח שורת פקודת מנהל ונעל את אמצעי האחסון לקריאה בלבד באמצעותdiskpart(select volume D,attributes volume set readonly). אם הקבצים היו מופעליםC:\, אל תכבה את Windows כרגיל (כיבוי רגיל כותב מאות מגה-בייט של כוורות רישום, יומני אירועים ועדכוני קבצי עמודים ללא תשלוםMFTאשכולות); במקום זאת, משוך את כבל החשמל של שולחן העבודה או החזק את לחצן ההפעלה של המחשב הנייד למטה למשך 10 שניות כדי לחתוך את החשמל באופן מיידי. - מנע SSD
TRIM(discard/UNMAP) מאפס את דפי ההבזק שלא הוקצו: אם הכונן הוא NVMe או SATA SSD והותקן עם רציףdiscard(או אם Windows/macOS פועל מתוזמןTRIMמיד עם מחיקת הקובץ), חיתוך חשמל או הרכבה מחדשroעוצר מיידית את מערכת ההפעלה מלעמוד בתור נוסףNVME_DSM_ATTR_DEALLOCATEפקודות, והצבת ה-SSD לתוך מתאם גשר USB ל-NVMe שאינו עוברTRIMבמהלך השחזור מונע מאיסוף האשפה ברקע של הבקר למחוק בלוקים הניתנים לשחזור. - אתחול מ-USB חי חיצוני (
Ubuntu Live,SystemRescue, אוWinPE) ושכפל את המחיצה ביט-עבור-ביט לכונן אחסון חיצוני באמצעותddrescueלפני הפעלת כלי לביטול מחיקה: לעולם אל תפעילext4magic,extundelete,testdisk,photorec, אוntfsundeleteישירות במצב כתיבה כנגד כונן הקורבן; תמיד לדמיין את מכשיר החסימה (sudo ddrescue -d -r0 /dev/nvme0n1p2 /mnt/external/disk_image.raw /mnt/external/rescue.map) וגלף את הקבצים שלך מהתמונה או כתוב קבצים משוחזרים אך ורק לדיסק פיזי שני. - בדוק תמונות של מערכת קבצים מקומית נסתרות (
Btrfs,ZFS,LVM, macOS APFS Time Machine תצלומים מקומיים ועותקי צל של Windows Volume) לפני שמבזבזים שעות על גילוף סקטורים גולמיים: מערכות רבות שומרות בשקט הפניות בלוק אטומי של נקודת זמן (tmutil listlocalsnapshots /ב-macOS,vssadmin list shadowsבווינדוס,zfs list -t snapshot, אוbtrfs subvolume list -s /) המאפשרים התאוששות מיידית של 100 אחוז שלrm -rfאוShift+Deleteספריות מבלי לגעת באשכולות לא מוקצים.
Danger
לעולם אל תתקין תוכנת שחזור (apt install extundelete, brew install testdisk, או הורדת Recuva/R-Studio דרך Chrome/Edge) לאותה מחיצה שבה הקבצים נמחקו זה עתה: הורדת תוכנית התקנה של 50 מגה-בייט (0.05 ג'יגה-בייט) ופריקה של אלפי קבצי ספריה אל C:\ או / מאלץ את מקצה מערכת הקבצים לתפוס את הבלוקים המדויקים שלא הוקצו ו MFT / inode רשומות שזה עתה שוחררו על ידי המחיקה שלך בשוגג. כל התקנת חבילה, הורדת דפדפן או אתחול רגיל של מערכת ההפעלה במחיצה המושפעת מחליפה לצמיתות גיגה-בייט של נתונים שניתנים לשחזור.
עץ החלטות: בדיקה מיידית לאחר מקרי rm -rf או Shift+Delete¶
עקוב אחר עץ ההחלטות הזה ב-60 השניות הראשונות של גילוי המחיקה כדי לשמר את האחוז הגבוה ביותר האפשרי של בלוקי נתונים לא מקושרים:
flowchart TD
Start["בשוגג rm -rf, find -delete, או Shift+Delete בוצע"] --> OpenCheck{"האם כל תהליך רץ (DB, Editor, Server, Tail) עדיין יכול לפתוח את הקובץ שנמחק?"}
OpenCheck -->|"כן (לינוקס / macOS עדיין פועל)"| ProcRescue["שלב 1: הפעל את sudo lsof +L1 באופן מיידי והעתק מתארי קובץ פתוחים מ-/proc/PID/fd/N לדיסק RAM (/dev/shm) או USB חיצוני"]
OpenCheck -->|"לא (או שכל הקבצים נסגרו)"| SnapCheck{"האם אמצעי האחסון משתמש ב-ZFS, Btrfs, APFS Local Snapshots או Windows Shadow Copies?"}
ProcRescue --> FreezeOS["שלב 2: הקפאת מיד את כל הכתיבה בדיסק"]
SnapCheck -->|"כן: תמונת מצב של CoW קיימת"| FreezeOS
SnapCheck -->|"לא: ext4, XFS או NTFS סטנדרטי ללא צילומי מצב"| FreezeOS
FreezeOS --> OSBranch{"איזו מערכת הפעלה ומחיצה נפגעו?"}
OSBranch -->|"לינוקס ללא שורש (/home, /data)"| RemountRO["הפעלה: sudo mount -o remount,ro /mountpoint"]
OSBranch -->|"מחיצת שורש לינוקס (/)."| SysRqRO["ריצה: echo u | sudo tee /proc/sysrq-trigger (תכונה מחדש לקריאה בלבד)"]
OSBranch -->|"Windows C: Drive או macOS Boot APFS"| HardPower["אל תכבה כרגיל: החזק את לחצן ההפעלה 10 שניות או משוך את כבל החשמל כדי למנוע כתיבת יומן/דף כיבוי"]
OSBranch -->|"כונן נתונים חיצוני משני"| UnmountSec["בטל את הטעינה / הגדר את עוצמת הקול לקריאה בלבד ונתק את הכונן"]
RemountRO --> LiveBoot["שלב 3: אתחול מערכת החיצונית Rescue Live USB ומחיצת שיבוט עם ddrescue לכונן חיצוני"]
SysRqRO --> LiveBoot
HardPower --> LiveBoot
UnmountSec --> LiveBoot
LiveBoot --> FSRecovery{"בחר שיטת שחזור לפי מערכת קבצים"}
FSRecovery -->|"ext4 / ext3"| ExtRec["שחזור יומן Inode: ext4magic / extundelete / debugfs"]
FSRecovery -->|"XFS / APFS / לא מתועד"| CarveRec["גילוף חתימה וכותרת עליונה/תחתונה: photorec / scalpel / foremost / xfs_irecover"]
FSRecovery -->|"NTFS (Windows)"| NtfsRec["ניתוח רשומות MFT: ntfsundelete / TestDisk / UFS Explorer / DMDE"]
מדוע כל שנייה רכוב Read-Write (rw) הורס קבצים שנמחקו¶
כדי להבין מדוע הרכבה מיידית לקריאה בלבד או הפסקת חשמל קשה היא החלטה של חיים או מוות עבור הנתונים שלך, בדוק מה בעצם כל מערכת קבצים מודרנית משנה כאשר אתה מפעיל unlink() (rm) או DeleteFileW() (Shift+Delete):
1. מה קורה בפנים ext4, XFS, APFS, ו NTFS במהלך המחיקה¶
כאשר קובץ נמחק, אף מערכת הפעלה צרכנית לא מבזבזת רוחב פס של קלט/פלט דיסק בכתיבת אפסים מעל מסד נתונים של 10 גיגה-בייט (10.7 מיליארד בתים) או קובץ וידאו. במקום זאת, מנהל ההתקן של מערכת הקבצים משנה רק מבני מטא נתונים זעירים:
| מערכת קבצים | מה rm -rf או Shift+Delete משתנה באופן מיידי |
מדוע השחזור קשה יותר בגרסאות מודרניות | וקטור השחזור הטוב ביותר |
|---|---|---|---|
ext4 (לינוקס) |
1. מסיר את שם הקובץ מהכניסה לספרייה. 2. מגדיר אינוד i_dtime (מחיקת חותמת זמן) וסטים i_links_count = 0.3. ** מכריע ext4 מוזרות**: מאפס את i_block / מצביעי עץ בתוך מבנה האינוד בדיסק עצמו, ומסמנים את בלוקי הנתונים פנויים במפת הסיביות של הבלוק. |
בניגוד ext3 (שרק איפס מצביעי בלוק עקיפים), ext4 מוחק את עץ המידה בתוך טבלת האינדה הראשית עם המחיקה. עם זאת, ה jbd2 יומן מערכת הקבצים עדיין מחזיק עותק ישן יותר של האינוד המדויק עם מצביעי ההיקף השלם שלו עד שמאגר הטבעת של היומן עוטף אותו. |
1. /proc/<pid>/fd/ אם פתוח.2. ext4magic / extundelete (מנתח את jbd2 יומן כדי למצוא את העותק מראש המחיקה של האינוד לפני שהיומן יחליף את עצמו).3. גילוף בלוק גולמי ( photorec). |
XFS (RHEL / CentOS / Rocky / Unraid) |
מסיר את ערך הספרייה B+עץ, מסמן את האינוד di_mode = 0 (חינם), ומחזירה את היקף הנתונים ישירות לקבוצת ההקצאה (AG) שטח פנוי B+עצים (cntbt / bnobt). |
XFS מאפס באגרסיביות רשומות בתוך האינודים המשוחררים (di_u) וממחזר אינודים במהירות על פני קבוצות הקצאה מקבילות. |
1. /proc/<pid>/fd/ אם פתוח.2. בדיקת יומן מטא נתונים ( xfs_logprint) או xfs_irecover / גילוף חתימת קובץ גולמית (photorec, scalpel). |
NTFS (Windows 10 / 11 / שרת) |
הופך את In-Use דגל (0x01 -> 0x00) ב-1,024-בייט (1 קילובייט) $MFT (Master File Table) כותרת רשומה ומסמנת שהאשכול פועל בחינם ב- $Bitmap קובץ. שם הקובץ, $DATA מצביעי רשימת הפעלה, וקבצי תושבים קטנים (מתחת ל-700 בתים) נשארים שלמים לחלוטין בתוך ה- $MFT שיא. |
אם הכונן נשאר מותקן ב-Windows, שירותי רקע (SearchIndexer.exe, svchost.exe, Windows Update, $UsnJrnl, ומציג אירועים) להקצות חדש $MFT רשומות שמחליפות את המשוחררים $MFT חריץ ו-SSD TRIM מאפס מיד את האשכולות הלא מוקצים. |
1. עותקי צל (vssadmin).2. ntfsundelete / TestDisk / DMDE / UFS Explorer (קורא את הקובץ ללא פגע $DATA רשימת הפעלה ישר מתוך הבלתי מוקצה $MFT חריץ). |
APFS (macOS) |
העתק-על-כתיבה (CoW) B-tree מסיר את רשומת היקף הקובץ ומסמן את תיק המפתח ללא הפניה. |
הצפנת חומרה לכל קובץ (T2 / M1-M4) בתוספת SSD TRIM הורס היקפים לא מוקצים אלא אם קיימת תמונת מצב מקומית. |
1. lsof +L1 אם פתוח.2. תמונות APFS מקומיות ( tmutil listlocalsnapshots /).3. הליכה בסופרבלוק מחסום. |
Btrfs & ZFS (לינוקס / BSD / NAS) |
העתק-על-כתיבה (CoW) עץ מעדכן בלוקים בחינם רק אם אין תמונת מצב מפנה לאותה קבוצת עסקאות (txg). |
ללא צילומי מצב, גילוף CoW הוא מורכב, אם כי ZFS txg חזרה לאחור (zpool import -F -T) או btrfs restore יכול להציל עצים. |
1. תמונות מצב קיימות (.zfs/snapshot/ או .snapshots/).2. קבוצת עסקאות ( txg) חזרה לאחור. |
2. ה-SSD TRIM (Discard / Deallocate) פצצת זמן¶
בכונן קשיח מסתובב (HDD), סקטורים נשארים קריאים עד שיודפסו. על SSD (SATA או NVMe), כאשר מערכת קבצים מנפיקה א TRIM או Deallocate פקודה:
- רוב בקרי ה-NVMe מיישמים קריאה דטרמיניסטית אפס לאחר TRIM (DRAT / DZAT), חוזר 0x00000000 (כולם אפסים) משכבת התרגום של פלאש (FTL) מיד עם קבלתו TRIM, עוד לפני הפעלת איסוף האשפה הפיזי של NAND.
- למה מערכות לינוקס לרוב שורדות TRIM: רוב הפצות לינוקס (Ubuntu, Debian, Fedora, RHEL) אל תאפשר זמן הרכבה רציף discard כברירת מחדל; הם מפעילים טיימר שבועי (fstrim.timer). אם תעלה מחדש לקריאה בלבד (ro) לפני fstrim.timer פועל, ה-SSD עדיין לא ביטל את מיפוי הבלוקים האלה.
שלב 1: הצלת קבצים שנמחקו שעדיין פתוחים בתהליך פועל (/proc/<pid>/fd/)¶
לפני שאתה אתחול מחדש, מבטל את הטעינה או סוגר חלון בודד ב-Linux או macOS, בדוק אם קיימים מתארי קבצים פתוחים. במערכות POSIX, rm שיחות unlink(). הקרנל עוקב אחר שני מונים עבור כל אינוד:
1. i_nlink: ערכי ספרייה בדיסק המצביעים על האינוד.
2. i_count: תהליכים פעילים המחזיקים את האינוד פתוח בזיכרון.
כלל ה-POSIX המוזהב: הגרעין לעולם לא משחרר את האינוד או מבטל קובצי דיסק עד שניהם i_nlink == 0 ו i_count == 0. אם מסד נתונים, יומן, וידאו או קוד שנמחקו עדיין פתוחים בתהליך כלשהו, 100 אחוז מהקובץ הזה נשאר שלם בדיסק.
שלב אחר שלב /proc/<pid>/fd/ חילוץ בלינוקס¶
- מצא כל קובץ שנמחק שעדיין פתוח בכל תהליך:
(או לסנן לפי שם קובץ:
sudo lsof | grep -i "(deleted)" | grep -i "filename") - קרא את
lsofעמודות פלט:שימו לב לCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME postgres 4182 postgres 14u REG 259,2 524288000 0 1839204 /var/lib/postgresql/16/main/base/16384/16399 (deleted)PID(4182) והסר את האות הנגררת (u,r,w) מFD(14u->14). - העתק את הקובץ הגולמי ממנו
/proc/<pid>/fd/<fd_num>לתוך זיכרון RAM (/dev/shm) או כונן חיצוני: לעולם אל תכתוב את הקובץ שניצל בחזרה למחיצה המושפעת. כתוב ל/dev/shm(דיסק RAM) או כונן USB חיצוני: - ** הצלת קבצים פתוחים מרובים שנמחקו ממסד נתונים או מיכל (
PID=4182) בלולאה אחת**: - מאגרי הצלה והיסטוריה מקומית של IDE (
vim,VS Code,Cursor,JetBrains): - אל תסגור לשוניות עורך פתוחות: שמור מאגרים פתוחים ישירות אל
/dev/shmאו כונן אצבע. - קוד VS / סמן / היסטוריה מקומית של VSCodium: מאחסן עותקים עם חותמת זמן אוטומטית של כל קובץ שנשמר בתוכו
-/.config/Code/User/History/(לינוקס),-/Library/Application Support/Code/User/History/(macOS), או%APPDATA%\Code\User\History\(Windows), לגמרי מחוץ לתיקיית הפרויקט שלך. גם אחריrm -rf -/my-projectאוgit clean -fdx, קבצי הקוד שלך נשארים שלמים בפניםUser/History/עם אentries.jsonמניפסט ממפה כל קובץ בחזרה לנתיב המקורי שלו. - מזדי JetBrains (
IntelliJ,PyCharm,WebStorm): מאחסן היסטוריה אוטומטית בפנים-/.cache/JetBrains/<IDE>/LocalHistory/. - גיט (
git reset --hardאוgit branch -Dעִם.git/שלם): רץgit reflogאוgit fsck --lost-foundמיד כדי לשחזר כתמים משתלשלים בפנים.git/objects/.
שלב 2: הקפאת מערכת הקבצים לקריאה בלבד (ro) מבלי לדרוס בלוקים לא מוקצים¶
לאחר שחילצת מתארי קובץ פתוחים מ /proc (או אומת שאין קיים), העדיפות המיידית שלך היא לעצור את מערכת ההפעלה מלכתוב סקטור אחד נוסף למחיצה.
1. לינוקס: הרכבה מחדש של מחיצת נתונים לעומת השורש (/) מחיצה לקריאה בלבד¶
- תרחיש א': הקבצים שנמחקו היו במחיצה נפרדת (
/home,/var,/data,/mnt/storage): - נסה מיד לבצע remount נקי לקריאה בלבד:
- אם
mountאומרmount point is busyלזהות ולעצור את תהליכי הכתיבה (sudo fuser -vm /homeואחריוsudo fuser -km -TERM /home), ואז מיד להפעיל מחדשsudo mount -o remount,ro /home. - תרחיש ב': הקבצים שנמחקו היו בשורש (
/) מחיצה (או שאינך יכול להרוג תהליכים עסוקים): אל תרוץsudo rebootאוsudo shutdown -h now, כי נורמליsystemdכיבוי כותב מגה בייט שלjournaldיומני כיבוי, זרעים אקראיים וקבצי מצב שירות ישירות אל/. במקום זאת, הפעל את Linux Kernel Magic SysRq Remount לקריאה בלבד: s(Emergency Sync): מסלק מטא-נתונים של מערכת הקבצים הממתינים בזיכרון כך שהסופרבלוק יהיה עקבי.u(Emergency Remount Read-Only): מעלה מחדש בכוח כל מערכת קבצים מותקנת במחשב כקריאה בלבד (ro) בתוך הקרנל, גם אם לתהליכים עדיין יש קבצים פתוחים לכתיבה. ודא את זה/הוא כעת לקריאה בלבד עםgrep " / " /proc/mounts.
2. הדמיה של שרת ענן מרוחק קפוא (AWS EC2, GCP, DigitalOcean, Hetzner) מעל SSH¶
אם רצתם בטעות rm -rf בשרת ענן מרוחק שבו אינך יכול לחבר כונן USB:
1. הפעל את ההתקנה מחדש של Magic SysRq לקריאה בלבד (echo s > /proc/sysrq-trigger && echo u > /proc/sysrq-trigger). הפעלת SSH הקיימת שלך נשארת בחיים מכיוון ש-SSH פועל ב-RAM ו /dev/pts (devpts) היא מערכת קבצים פסאודו-טרמינלית של זיכרון RAM וירטואלי.
2. בפלטפורמות ענן (AWS EC2, GCP, Azure, DigitalOcean), צלמו מיד EBS / Block Volume Snapshot אטומית ממסוף הענן, או עצור את המופע, נתק את נפח הבסיס וצרף אותו לקריאה בלבד (/dev/xvdf) ל-VM של הצלה נקייה.
3. בשרת מרוחק מתכת חשופה, הזרם תמונה גולמית דחוסה של המחיצה הקפואה לקריאה בלבד ישירות דרך SSH לתחנת העבודה המקומית שלך:
ssh root@remote-server-ip "dd if=/dev/nvme0n1p2 bs=4M status=progress | zstd -1" > ~/rescued_partition.img.zst
שלב 3: בדיקת Copy-on-Write מוסתר (CoW) צילומי מצב ועותקי צל לפני גילוף¶
לפני סריקת טרה-בייט של סקטורים לא מוקצים, בדוק אם מערכת ההפעלה שלך יצרה אוטומטית תמונת מצב נסתרת של נקודת זמן:
1. macOS: Local Time Machine APFS Snapshots (tmutil)¶
גם אם כונן Time Machine החיצוני שלך היה מנותק במשך שבועות, macOS מקליט אוטומטית תמונות APFS מקומיות של העתקה-על-כתיבה ב-SSD הפנימי שלך (com.apple.TimeMachine.YYYY-MM-DD-HHMMSS.local) בכל פעם ש-Time Machine מוגדרת או לפני עדכוני macOS:
1. רשום את כל התמונות המקומיות בטרמינל:
rm -rf, התקן אותו לקריאה בלבד והעתק את הקבצים שלך החוצה:
mkdir -p /tmp/apfs_rescue
sudo mount_apfs -o ro -s com.apple.TimeMachine.2026-10-31-140000.local /System/Volumes/Data /tmp/apfs_rescue
ls -la /tmp/apfs_rescue/Users/yourname/
2. Windows 10 / 11 / Server: Volume Shadow Copies (VSS)¶
- פתח שורת פקודה של מנהל מערכת והפעל:
- אם עותק צל (
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1) מקדימה את שלךShift+Delete, קשר אותו לתיקיה והעתק את הקבצים שלך לכונן USB:
3. לינוקס: Btrfs, ZFS, ו LVM תצלומים¶
- ** פועל
Btrfs(מערכות Fedora, openSUSE, Synology, Timeshift/Snapper)**: הפעלsudo btrfs subvolume list -s /ולבדוק/.snapshots/או/run/timeshift/backup/timeshift-btrfs/snapshots/. - ** פועל
ZFS(Ubuntu ZFS, Proxmox, TrueNAS)**: הפעלzfs list -t snapshotולהעתיק קבצים ישירות מ/path/to/dataset/.zfs/snapshot/.
שלב 4: שחזור Inode, יומן ו-MFT שלב אחר שלב לפי מערכת קבצים¶
אם אין מתאר קובץ פתוח (/proc/<pid>/fd/) ולא הייתה קיימת תמונת מצב, אתחל מ-SystemRescue או Ubuntu Live USB, חבר כונן קשיח USB חיצוני (/mnt/external), וצור שיבוט ביט אחר סיביות של מחיצת הקורבן הלא מורכבת (/dev/nvme0n1p2) ראשון:
/mnt/external/victim_partition.img כך שהכונן המקורי לעולם לא משתנה.
1. מתאושש מ ext4 / ext3 בלינוקס (ext4magic ו extundelete)¶
מתי rm -rf מוחק קבצים על ext4, הגרעין מאפס את מצביעי עץ המידה בתוך טבלת האינוד הראשית. עם זאת, ext4של jbd2 יומן (בדרך כלל בגודל של 128 מגה-בייט עד 1,024 מגה-בייט) מאחסן עותקים היסטוריים של בלוקי האינוד ששונו לאחרונה. כל עוד עלית מחדש ro לפני שפעילות כבדה בדיסק עטפה את מאגר הטבעת היומן, ext4magic מחלץ את האינוד מראש המחיקה מהיומן ומשחזר את הקבצים שלך עם שמות קבצים מקוריים ועצי ספריות ללא פגע.
- רוץ
ext4magicכדי לשחזר את כל הקבצים שנמחקו במהלך השעתיים האחרונות (-a) בתוך נתיב יחסי (-f): (השמט את הנתח המוביל של נקודת ההר פנימה-f: עבור/home/kmyers/projectעל שורש/מחיצה, לעבור-f home/kmyers/project; אם/homeהיא מחיצה משלו, לעבור-f kmyers/project.) - אלטרנטיבה: לרוץ
extundeleteנגד התמונה:
2. שחזור מ-Windows NTFS אחרי Shift+Delete (TestDisk ו ntfsundelete)¶
בניגוד ext4, חלונות NTFS לא מאפס את מצביעי היקף הבלוק (Data Runs) בתוך טבלת הקבצים הראשית ($MFT) להקליט כאשר קובץ נמחק. כשאתה לוחץ Shift+Delete ב-NTFS, ה-1,024 בתים $MFT הערך פשוט מפנה את דגל הכותרת שלו 0x01 (בשימוש) ל 0x00 (נמחק). שלה $FILE_NAME תכונה ו $DATA רשימת הריצה של אשכולות תישאר 100 אחוז שלמה עד שקובץ אחר יעשה בו שימוש חוזר $MFT משבצת:
- באמצעות
TestDiskעבור NTFS מיידי$MFTביטול מחיקה עם נתיבי תיקייה מלאים: בחר[ Proceed ]->[ EFI GPT ]->[ Advanced ]-> סמן את מחיצת ה-NTFS ->[ Undelete ]. נווט לתיקיה שלך, הקשaכדי לבחור קבצים שנמחקו, ולחץ עלC(בירהC) כדי להעתיק אותם אליהם/mnt/external/recovered_ntfs/. - באמצעות
ntfsundelete(ntfs-3g):
3. מתאוששים מ XFS, APFS, או יומנים שהוחלפו באמצעות גילוף בלוק גולמי (PhotoRec ו grep -a -b)¶
כאשר מצביעי האינוד נעלמים (כגון ב-XFS, APFS, או ext4 מחיצה שהיומן שלה עטוף), שחזר נתונים על ידי סריקת בלוקים של 4,096 בתים (4 קילובייט) לא מוקצים עבור כותרות עליונות/תחתונות של קבצים או מחרוזות טקסט ייחודיות:
| מה שמחקת | כלי הגילוף הגולמי הטוב ביותר והפקודה המדויקת | למה זה עובד בלי אינודות |
|---|---|---|
קוד מקור, Configs, Markdown, SQL Dumps, SSH Keys, JSON/YAML (Plain Text Files) |
grep -a -b -C 150 ישירות מול תמונת המחיצה הגולמית:LC_ALL=C grep -a -b -C 150 "unique_function_name" /mnt/external/victim_partition.img > /mnt/external/carved_code.txt |
קבצי טקסט רגיל חסרים כותרות קסם בינאריות ולכן PhotoRec לעתים קרובות מדלג עליהם. grep -a -b מחפש בכל בייט גולמי של תמונת הדיסק אחר כל שם משתנה או מחרוזת ייחודית שאתה זוכר שהקלדת ומוציא את 300 השורות שמסביב של בלוקי דיסק גולמיים. |
מסמכים, קובצי PDF, Office (DOCX/XLSX), ארכיוני ZIP/TAR, תמונות, סרטונים, SQLite DBs |
PhotoRec(testdisk חבילה):sudo photorec /mnt/external/victim_partition.img -> [ File Opt ] -> [ Free ] (שטח לא מוקצה) -> כתוב פלט ל /mnt/external/photorec_out/. |
מזהה מעל 480 כותרות עליונות ותחתונות של קבצים בינאריים (%PDF-, PK\x03\x04 עבור ZIP/DOCX/XLSX, SQLite format 3, JPEG/PNG/MP4) ומרכיב מחדש בלוקים רציפים גם כאשר כל עצי הספרייה והאינודים מאופסים. |
| אינודה ספציפית XFS וגילוף עץ B | xfs_irecover או UFS Explorer Professional Recovery |
סורק קבוצות הקצאת XFS (AGs) עבור אשכולות אינוד לא מקושרים ושברי מידה רציפים. |
כיצד להשתמש grep -a -b + dd כדי להציל קוד מקור שנמחק או .env קבצים תוך פחות מ-2 דקות¶
אם מחקת את קוד המקור, .env סודות, או הערות מתחת לגודל של 32 קילובייט:
1. חפש מחרוזת ייחודית בתוך הקובץ שנמחק והדפיס את היסט הבתים המדויק שלו (-b):
grep תפוקות 48291045312:def calculate_invoice_tax.
2. מחלקים את הבתים שקוזזים ב 4096 (48291045312 / 4096 = 11789805), צעד אחורה 10 בלוקים (11789795), ושופך 30 בלוקים (120 קילובייט) של דיסק גולמי סביב ההיסט הזה:
dd if=/mnt/external/victim_partition.img bs=4096 skip=11789795 count=30 status=none > /mnt/external/rescued_code_block.txt
/mnt/external/rescued_code_block.txt בכל עורך טקסט כדי לחלץ את קובץ הטקסט הרגיל ללא פגע.
שלב 5: מניעת קטסטרופה עתידית rm -rf ו Shift+Delete תאונות¶
- החלף אינטראקטיבי
rmעִםtrash-cliוrm -I --preserve-root=all: התקןtrash-cli(trash-put,trash-list,trash-restore) וכינויrmלrm -I --preserve-root=allב/etc/bash.bashrcו-/.zshrcאז מחיקות רקורסיביות בשוגג מבקשות פעם אחת לפני ביטול הקישור לאינודים. - הגן על ספריות ייצור קריטיות עם התכונה הבלתי ניתנת לשינוי של Linux (
chattr +i): אפילוroot(sudo rm -rf) אין אפשרות למחוק או לשנות ספריה או קובץ מסומניםsudo chattr +i /path/to/critical_configעד שמנהל מערכת רץsudo chattr -i. - אפשר העתקה-על-כתיבה אוטומטית מקומית (
CoW) תמונות בזק (Btrfs/ZFS/APFS/Windows Shadow Copies): השתמשSnapperאוTimeshiftעלBtrfs,sanoidעלZFS, או פעמיים ביום Volume Shadow Copies ב-Windows (SystemPropertiesProtection.exe). - שמור על גיבויים אוטומטיים 3-2-1 עם אחסון בלתי ניתן לשינוי חוץ-אתר: עקוב אחר המדריך שלנו ל גיבויי מחשב, אסטרטגיית 3-2-1 והתאוששות מאסון באמצעות
resticאוborgbackupעם מאגרים מרוחקים להוספה בלבד.
מספרי חירום אזוריים ופרוטוקולי סוכנות¶
בעוד שמחיקת קבצים בשוגג במחשב אישי היא מקרה חירום טכני ולא עניין משטרתי, מחיקה מקרית או זדונית המשפיעה על מערכות הבריאות, תשתית עירונית, ראיות משפטיות לפי צו שימור בית משפט או נתונים אישיים מוסדרים עלולה להפעיל דיווח חובה על תקריות:
- ארצות הברית וקנדה:
- הפסקת תשתית חירום בטיחות חיים: חייג
911אם מחיקת מערכת פוגעת בטיפול בחולים בבית החולים, בשיגור חירום או בבקרות הבטיחות הפיזיות התעשייתיות. - סוכנות אבטחת סייבר ותשתיות (
CISA) (ארה"ב): דווח על השמדת נתוני תשתית קריטית או חשד לחבלה פנימית ב-1-844-Say-CISA(1-844-729-2472) אוcisa.gov/report. - המרכז הקנדי לאבטחת סייבר: יצירת קשר
1-833-CYBER-88(1-833-292-3788) לאירועי תשתית קריטיים. - בְּרִיטַנִיָה:
- שירותי חירום: חייגו
999(או101לדיווח ללא משטרת חירום אם המחיקה הייתה כרוכה בשימוש לא מורשה במחשב לפי חוק שימוש לרעה במחשב 1990). - משרד נציב המידע (
ICO): אם מחיקה בשוגג הורסת לצמיתות נתונים אישיים ללא שחזור גיבוי (מהווה הפרת זמינות במסגרת GDPR של בריטניה), העריכו אם הודעה ל-ICO (0303 123 1113) נדרש תוך 72 שעות. - האיחוד האירופי:
- שירותי חירום: חייגו
112בכל המדינות החברות באיחוד האירופי. - ** GDPR סעיף 33 דיווח על הפרת זמינות**: במסגרת המועצה האירופית להגנת מידע (
EDPB) הנחיות, השמדה לצמיתות בשוגג של נתונים אישיים ללא גיבוי הניתן לשחזור מסווגת כהפרת נתונים אישיים (אובדן זמינות) ועשויה לדרוש דיווח לרשות הלאומית להגנת הנתונים שלך (DPA) תוך 72 שעות. - אוסטרליה וניו זילנד:
- שירותי חירום: חייגו
000באוסטרליה או111בניו זילנד. - מרכז אבטחת סייבר אוסטרלי (
ACSC): התקשר1300 CYBER1(1300 292 371) לסיוע ארגוני או תשתית. - הודו ואסיה-פסיפיק:
- הודו (
CERT-In/ קו העזרה הלאומי לפשעי סייבר): חייג112לתגובת חירום או1930עבור אירועי פשיעה סייבר; יש לדווח על תקריות ארגוניות המכוסות במנדטים של CERT-In תוך 6 שעותincident@cert-in.org.in.
שאלות נפוצות¶
למה לא extundelete או ext4magic למצוא את שמות הקבצים שלי ext4 למרות שהפסקתי להשתמש במחשב די מהר?¶
כאשר קובץ נמחק ב- ext4, ליבת הלינוקס מאפסת מיד את מצביעי עץ המידה בתוך טבלת האינוד שבדיסק, כך שמערכת הקבצים יודעת שלאינודה אין היקף הוקצו. כלים כמו ext4magic ו מחק הסתמכו על מציאת עותק ישן יותר, שנמחק מראש של האינוד הזה בתוך ext4 יומן (jbd2). אם הקובץ נוצר ונמחק מבלי שה-inode שלו עבר לאחרונה ביומן, או אם כתיבת רקע כבדה עטפה את מאגר צלצול היומן של 128 מגה-בייט עד 1 ג'יגה-בייט לפני שהעלית מחדש לקריאה בלבד, עותק היומן נעלם. במקרה כזה, עליך לעבור לגילוף חתימות גולמיות (PhotoRec) או חיפוש בתים בטקסט רגיל (grep -a -b), אשר סורקים בלוקי נתונים לא מוקצים ישירות מבלי להזדקק למטא-נתונים של inode.
עושה SSD TRIM תמיד להרוס rm -rf או Shift+Delete קבצים מיד?¶
לא תמיד, במיוחד בלינוקס ובכוננים חיצוניים. ב-Windows 10/11 ו-macOS עם כונני NVMe SSD פנימיים, מערכת ההפעלה בדרך כלל שולחת הודעה מוטבעת TRIM / בטל הקצאה פקודה לבקר ה-SSD תוך שניות ממחיקה לצמיתות, מה שגורם לשכבת תרגום הפלאש של ה-SSD (FTL) כדי להחזיר אפסים (DZAT) עבור אותם בלוקים. עם זאת, רוב ההפצות של לינוקס (אובונטו, דביאן, פדורה, RHEL) כן לא לאפשר זמן הרכבה מתמשך להשליך כברירת מחדל; במקום זאת, הם רצים fstrim.timer פעם בשבוע. יתר על כן, מארזים חיצוניים רבים מסוג USB-to-SATA ו-USB-to-NVMe אינם עוברים TRIM פקודות דרך אחסון המוני USB (BOT), ושכבות תוכנה RAID / LVM / LUKS חוסמות לעתים קרובות להשליך מעבר כברירת מחדל אלא אם כן מוגדר במפורש (`issue_discards = 1` או `allow-discards`).
מה אם מחיצת הלינוקס שלי מוצפנת עם LUKS (dm-crypt) או כונן Windows שלי משתמש BitLocker: האם אני עדיין יכול לגלף קבצים שנמחקו?¶
כן, בתנאי שיש לך את משפט הסיסמה או מפתח השחזור של ההצפנה ותבטל את נעילת המכולה במצב קריאה בלבד. לעולם אל תברח photorec, ext4magic, או דיסק בדיקה כנגד המחיצה הפיזית המוצפנת הגולמית (/dev/nvme0n1p2), כי טקסט צופן מוצפן נראה כמו רעש אקראי. במקום זאת, אתחל מ-USB Live, בטל את נעילת המיכל פנימה מצב קריאה בלבד (עבור LUKS: sudo cryptsetup open --readonly /dev/nvme0n1p2 crypt_rescue; עבור BitLocker בלינוקס: dislocker -r או פתח את הנעילה לקריאה בלבד ב-WinPE), ותצלם או סרוק את התקן הממפה הווירטואלי המפוענח (/dev/mapper/crypt_rescue).
למה מושך את כבל החשמל ב-Windows C:\ בטוח יותר לאחר תאונה Shift+Delete מאשר ללחוץ על "כיבוי"?¶
כאשר אתה לוחץ התחל > כיבוי ב-Windows, מערכת ההפעלה מבצעת מאות מגה-בייט של כתיבת דיסק לפני כיבוי: היא שוטפת את כוורות הרישום, כותבת אירועי כיבוי ל-Windows. .evtx יומנים, מעדכן את יומן USN ($UsnJrnl), מנקה או משנה גודל pagefile.sys, ובמערכות הפעלה מהירה כותב קובץ שינה מרובה גיגה-בייט (hiberfil.sys) ישירות על פני אשכולות NTFS לא מוקצים. כתבי כיבוי אלה מחליפים לעתים קרובות את המדויק שלא הוקצה $MFT רשומות ואשכולות נתונים ששוחררו על ידיך Shift+Delete. אילוץ כיבוי מיידי (החזקת לחצן ההפעלה למשך 10 שניות או משיכת התקע) עוצרת את כל הכתיבה באופן מיידי; NTFS יישאר קריא לחלוטין בעת אתחול מ-Linux או WinPE rescue USB לקריאה בלבד.
כיצד אוכל לשחזר קובץ שנמחק .env קובץ, מפתח SSH או קובץ קוד מקור PhotoRec התעלמו?¶
PhotoRec מחפש כותרות בייט קסם בינאריות (כמו %PDF, PNG, או PK עבור קבצי ZIP/Office), כך שלעתים קרובות הוא מדלג או מקבץ יחד קבצי טקסט קצרים כמו .env תצורות, קוד מקור Python/JavaScript, הערות Markdown ומפתחות SSH. כדי לשחזר כל קובץ טקסט רגיל מתמונת דיסק או מחיצה לקריאה בלבד, הפעל LC_ALL=C grep -a -b -C 100 "UNIQUE_TEXT_FROM_FILE" /dev/nvme0n1p2 > /dev/shm/found.txt. אם אתה מכיר שם משתנה כלשהו (כגון STRIPE_SECRET_KEY= או התחל OPENSSH מפתח פרטי), grep -a -b סורק את הסקטורים הגולמיים בכמה גיגה-בייט לשנייה ומדפיס את בלוקי הדיסק שמסביב.
אם רצתי בטעות rm -rf / או נמחק /usr או /lib בלינוקס ועכשיו אפילו לא ls, cp, או sudo עובד, איך אני מפעיל פקודות בטרמינל הפתוח שלי?¶
אם ניגבת /bin או /lib בעוד קיים bash או זש המסוף עדיין פתוח ב-RAM, כמו קבצים בינאריים חיצוניים /bin/ls או /bin/cp ייכשל עם אין קובץ או ספרייה כאלה, אבל המעטפת המובנית עדיין פועלת לחלוטין בתוך זיכרון RAM. אתה יכול להשתמש הד* במקום ls, printf "%s\n" "$( /dev/shm/rescued במקום cp, ו echo u > /proc/sysrq-trigger (אם המעטפת שלך כבר שורשית) כדי להפעיל התקנה מחדש של ליבה לקריאה בלבד לפני כיבוי ואתחול של SystemRescue Live USB.
מדריכים קשורים¶
- מחיקת קבצים בשוגג, כונן מעוצב ושחזור תמונות
- מצב קריאה פתאומי של SSD ו-NVMe, 0% חסימות חילוף ו-TRIM השבתת הצלה
- כשל בכונן קשיח ושחזור נתונים
- מערך RAID של NAS פגום, כשל בכוננים מרובים ושחזור ZFS/Btrfs
- גיבוי מחשבים, אסטרטגיית 3-2-1, והתאוששות מאסון
- מספרי חירום לפי מדינה
מקורות והדרכה רשמית¶
- המכון הלאומי לתקנים וטכנולוגיה (
NIST) (ארצות הברית): פרסום מיוחד 800-86: מדריך לשילוב טכניקות משפטיות בתגובת תקריות ו-SP 800-88 Rev. 1: הנחיות לניקוי מדיה (ATA TRIM / NVMe Deallocate Behavior). - ארגון ליבת לינוקס (
kernel.org): תיעוד מערכת הקבצים Ext4 (הקצאת חסימה ואינוד,jbd2כתב יומן, וprocfs/proc/<pid>/fd/סמנטיקה של מתאר קבצים) ומפתח בקשת מערכת הקסם של לינוקס (sysrq.txt). - CGSecurity (
TestDisk&PhotoRecתיעוד רשמי) וext4magicמדריך עזר במעלה הזרם: חילוץ אינודות יומן וגילוף היקף לא מוקצה בנפחי ext3/ext4 ו-NTFS. - הסוכנות לאבטחת סייבר ותשתיות (
CISA) (ארצות הברית): שיטות עבודה מומלצות לשימור עדויות נדיפות/לא נדיפות לאירועים וזיהוי פלילי. - סוכנות האיחוד האירופי לאבטחת סייבר (
ENISA): מדריך נוהג טוב לזיהוי פלילי דיגיטלי ושימור אמצעי אחסון.