Przypadkowe polecenie rm -rf lub Shift-Delete w systemie Linux, macOS lub Windows: natychmiastowe ponowne zamontowanie w trybie tylko do odczytu¶
Numery alarmowe różnią się w zależności od kraju. Na tej stronie używany jest numer 911, numer obowiązujący w Stanach Zjednoczonych i Kanadzie. W wielu innych krajach używany jest numer 112, 999 lub inny. Znajdź numer dla swojego kraju.
Oglądanie wypadku rm -rf, find -delete, git clean -fdxlub Windowsa Shift+Delete wymazanie krytycznych produkcyjnych baz danych, kodu źródłowego lub plików osobistych bez wysyłania ich do Kosza lub folderu Kosz wywołuje natychmiastową panikę. Jednak nie rm -rf ani Shift+Delete faktycznie zeruje podstawowe sektory pamięci w momencie zakończenia polecenia: zamiast tego system operacyjny po prostu odłącza wpis katalogu, aktualizuje swój dziennik metadanych i zaznacza te wskaźniki i-węzłów lub główną tabelę plików (MFT) zapisuje i blokuje mapy bitowe jako dostępne do ponownego użycia. Tym, co trwale niszczy usunięte pliki, jest to, że w każdej sekundzie system plików pozostaje zamontowany w trybie odczytu i zapisu (rw) tryb po usunięciu, jako rejestratory systemowe działające w tle (systemd-journald, rsyslog), pamięci podręcznej przeglądarki, aktywności wymiany i dysku SSD TRIM / discard polecenia szybko nadpisują nowo zwolnione bloki. Jeśli zamiast tego w Twoim systemie występują fizyczne kliknięcia, uszkodzone sektory lub martwy kontroler, zatrzymaj się i przejdź do naszego przewodnika awaria dysku twardego i odzyskiwanie danychlub jeśli dysk SSD zablokował się z powodu zużycia kontrolera, zobacz Nagły tryb tylko do odczytu dysków SSD i NVMe oraz funkcja ratunkowa z wyłączeniem TRIM; w przypadku szerszych błędów formatowania lub problemów z kartą aparatu należy skonsultować się przypadkowe usunięcie plików, sformatowanie dysku i odzyskanie zdjęć. Jeśli zdarzenie to obejmuje sabotaż kryminalny, wymuszenie lub awarię systemu bezpieczeństwa, zadzwoń pod lokalny numer alarmowy (911 w Stanach Zjednoczonych i Kanadzie, 112 w całej Unii Europejskiej, 999 w Wielkiej Brytanii) lub sprawdź nasz międzynarodowy katalog numery alarmowe.
Zrób to teraz¶
- Naciśnij
Ctrl+Cnatychmiast, jeśli polecenie usunięcia jest nadal uruchomione i NIE zamykaj żadnych otwartych okien terminali, edytorów tekstu, odtwarzaczy multimedialnych ani demonów baz danych: Jeśli jakikolwiek uruchomiony program (nginx,postgres,mysqld,vim,code,python,taillub odtwarzacz wideo) nadal ma otwarty usunięty plik w pamięci, jądro systemu Linux lub macOS utrzymuje bloki danych pliku na dysku w nienaruszonym stanie, dopóki proces nie zamknie deskryptora pliku. Zamknięcie aplikacji lub ponowne uruchomienie komputera w tej chwili natychmiast zwolni licznik referencji (i_nlink == 0) i wywołać faktyczne zwolnienie bloku. - Przed ponownym zamontowaniem lub wyłączeniem zasilania w systemie Linux sprawdź
/proc/<pid>/fd/teraz, aby uratować wszystkie usunięte pliki, które nadal są otwarte przez działający proces: Uruchomsudo lsof +L1(która zawiera listę wszystkich otwartych plików, których liczba linków jest mniejsza niż 1, co oznacza, że zostały rozłączone przezrmgdy są jeszcze otwarte) i natychmiast skopiuj ich surową zawartość z pamięci RAM/cache jądra na osobny dysk lub/dev/shm(tmpfsDysk RAM) za pomocącp /proc/<pid>/fd/<fd_number> /dev/shm/rescued_file. - Zamontuj ponownie partycję tylko do odczytu, której dotyczy problem (
ro) natychmiast, aby jądro systemu operacyjnego nie mogło zapisać kolejnego bajtu dzienników dziennika lub plików tymczasowych w nieprzydzielonych blokach: - W systemie Linux (
ext4,XFS,Btrfs): Biegnijsudo mount -o remount,ro /path/to/mountpoint(na przykładsudo mount -o remount,ro /homeLubsudo mount -o remount,ro /). - Jeśli
mount -o remount,ronie udaje się zmount point is busyna twoim root'ie (/) partycja: Wywołaj natychmiastowe awaryjne ponowne zamontowanie jądra w trybie tylko do odczytu za pomocą Magic SysRq, uruchamiającecho u | sudo tee /proc/sysrq-trigger(co zmusza wszystkie zamontowane systemy plików do natychmiastowego ponownego zamontowania w trybie tylko do odczytu, bez przerywania procesów lub oczekiwania na otwarcie blokad). - W systemie macOS (
APFS/HFS+): Biegnijsudo diskutil mount readOnly /Volumes/TargetVolumew przypadku woluminów innych niż rozruchowy lub jeśli pliki znajdowały się na dysku podstawowymDataobjętość (/System/Volumes/Data), natychmiast wymuś wyłączenie zasilania, przytrzymując przycisk Touch ID/zasilanie przez 10 sekund, aby zatrzymać funkcję Spotlight w tle (mds_stores) ifseventsdpisze. - W systemie Windows (
NTFS/ReFS): Jeśli usunięte pliki znajdowały się na dysku dodatkowym (D:,E:), otwórz wiersz poleceń administratora i zablokuj wolumin w trybie tylko do odczytudiskpart(select volume D,attributes volume set readonly). Jeśli pliki były włączoneC:\, nie zamykaj normalnie systemu Windows (normalne zamknięcie powoduje zapisanie setek megabajtów gałęzi rejestru, dzienników zdarzeń i aktualizacji pliku stronicowania ponad zwolnioneMFTklastry); zamiast tego pociągnij za przewód zasilający komputera stacjonarnego lub przytrzymaj przycisk zasilania laptopa przez 10 sekund, aby natychmiast odciąć zasilanie. - Zapobiegaj dyskom SSD
TRIM(discard/UNMAP) z zerowania nieprzydzielonych stron flash: Jeśli dysk jest dyskiem SSD NVMe lub SATA i został zamontowany z ciągłądiscard(lub jeśli system Windows/macOS działa zgodnie z harmonogramemTRIMnatychmiast po usunięciu pliku), odcięcie zasilania lub ponowny montażronatychmiast zatrzymuje system operacyjny przed kolejkowaniem dodatkowychNVME_DSM_ATTR_DEALLOCATEpoleceń i umieszczenie dysku SSD w adapterze mostka USB-NVMe, który nie przechodziTRIMpodczas odzyskiwania zapobiega wyczyszczeniu odzyskanych bloków przez zbieranie elementów bezużytecznych w tle kontrolera. - Uruchom z zewnętrznego Live USB (
Ubuntu Live,SystemRescuelubWinPE) i sklonuj partycję bit po bicie na zewnętrzny dysk pamięci za pomocąddrescueprzed uruchomieniem jakiegokolwiek narzędzia do przywracania usunięcia: Nigdy nie uruchamiajext4magic,extundelete,testdisk,photoreclubntfsundeletebezpośrednio w trybie zapisu na dysku ofiary; zawsze wyobrażaj sobie urządzenie blokowe (sudo ddrescue -d -r0 /dev/nvme0n1p2 /mnt/external/disk_image.raw /mnt/external/rescue.map) i wytnij pliki z obrazu lub zapisz odzyskane pliki wyłącznie na drugim dysku fizycznym. - Sprawdź ukryte migawki lokalnego systemu plików (
Btrfs,ZFS,LVM, lokalne migawki macOS APFS Time Machine i kopie w tle woluminów systemu Windows) przed spędzeniem godzin na wycinaniu surowych sektorów: Wiele systemów po cichu zachowuje odniesienia do bloków atomowych punktu w czasie (tmutil listlocalsnapshots /na MacOS-ie,vssadmin list shadowsw systemie Windows,zfs list -t snapshotlubbtrfs subvolume list -s /), które umożliwiają natychmiastowe 100-procentowe odzyskanierm -rfLubShift+Deletekatalogów bez dotykania surowych nieprzydzielonych klastrów.
Danger
Nigdy nie instaluj oprogramowania do odzyskiwania (apt install extundelete, brew install testdisklub pobieranie Recuva/R-Studio przez Chrome/Edge) na tę samą partycję, na której pliki zostały właśnie usunięte: Pobieranie instalatora o rozmiarze 50 megabajtów (0,05 gigabajta) i rozpakowywanie tysięcy plików bibliotek na C:\ Lub / zmusza alokator systemu plików do pobrania dokładnie nieprzydzielonych bloków i MFT / rekordy i-węzła, które zostały właśnie zwolnione przez przypadkowe usunięcie. Każda instalacja pakietu, pobranie przeglądarki lub normalne ponowne uruchomienie systemu operacyjnego na dotkniętej partycji trwale zastępuje gigabajty danych możliwych do odzyskania.
Drzewo decyzyjne: natychmiastowa segregacja po wypadku rm -rf Lub Shift+Delete¶
Postępuj zgodnie z tym drzewem decyzyjnym w ciągu pierwszych 60 sekund od wykrycia usunięcia, aby zachować najwyższy możliwy procent niepołączonych bloków danych:
flowchart TD
Start["Wykonano przypadkowe polecenie rm -rf, find -delete lub Shift+Delete"] --> OpenCheck{"Czy w jakimkolwiek działającym procesie (DB, edytor, serwer, ogon) nadal może być otwarty usunięty plik?"}
OpenCheck -->|"Tak (Linux/macOS nadal działa)"| ProcRescue["KROK 1: Natychmiast uruchom sudo lsof +L1 i skopiuj deskryptory otwartych plików z /proc/PID/fd/N na dysk RAM (/dev/shm) lub zewnętrzny USB"]
OpenCheck -->|"Nie (lub wszystkie pliki zostały zamknięte)"| SnapCheck{"Czy wolumin korzysta z lokalnych migawek ZFS, Btrfs, APFS lub kopii w tle systemu Windows?"}
ProcRescue --> FreezeOS["KROK 2: Natychmiast zablokuj wszystkie zapisy na dysku"]
SnapCheck -->|"Tak: istnieje migawka CoW"| FreezeOS
SnapCheck -->|"Nie: standardowy ext4, XFS lub NTFS bez migawek"| FreezeOS
FreezeOS --> OSBranch{"Który system operacyjny i partycja zostały trafione?"}
OSBranch -->|"Linux inny niż root (/home, /data)"| RemountRO["Uruchom: sudo mount -o remount,ro /mountpoint"]
OSBranch -->|"Partycja główna systemu Linux (/)."| SysRqRO["Uruchom: echo u | sudo tee /proc/sysrq-trigger (awaryjne ponowne zamontowanie jądra tylko do odczytu)"]
OSBranch -->|"Windows C: Dysk lub macOS Boot APFS"| HardPower["NIE wyłączaj normalnie: przytrzymaj przycisk zasilania przez 10 sekund lub pociągnij za przewód zasilający, aby zapobiec zapisowi dziennika/pliku stronicowania podczas wyłączania"]
OSBranch -->|"Dodatkowy dysk zewnętrzny lub dysk danych"| UnmountSec["Natychmiast odmontuj/ustaw wolumin jako tylko do odczytu i odłącz dysk"]
RemountRO --> LiveBoot["KROK 3: Uruchom zewnętrzny system Rescue Live USB i sklonuj partycję za pomocą ddrescue na dysk zewnętrzny"]
SysRqRO --> LiveBoot
HardPower --> LiveBoot
UnmountSec --> LiveBoot
LiveBoot --> FSRecovery{"Wybierz metodę odzyskiwania według systemu plików"}
FSRecovery -->|"ext4 / ext3"| ExtRec["Odzyskiwanie i-węzłów dziennika: ext4magic / extundelete / debugfs"]
FSRecovery -->|"XFS / APFS / bez dziennika"| CarveRec["Podpis i rzeźba nagłówka/stopki: fotorec / skalpel / przede wszystkim / xfs_irecover"]
FSRecovery -->|"NTFS (Windows)"| NtfsRec["Analiza rekordu MFT: ntfsundelete / TestDisk / UFS Explorer / DMDE"]
Dlaczego co drugi zamontowany odczyt-zapis (rw) niszczy usunięte pliki¶
Aby zrozumieć, dlaczego natychmiastowe ponowne zamontowanie w trybie tylko do odczytu lub twarde odcięcie zasilania to decyzja o życiu lub śmierci dla Twoich danych, sprawdź, co faktycznie modyfikuje każdy nowoczesny system plików po uruchomieniu unlink() (rm) lub DeleteFileW() (Shift+Delete):
1. Co dzieje się w środku ext4, XFS, APFS, i NTFS podczas usuwania¶
Po usunięciu pliku żaden konsumencki system operacyjny nie zużywa przepustowości dysku we/wy na zapisywanie zer w bazie danych lub pliku wideo o wielkości 10 gigabajtów (10,7 miliarda bajtów). Zamiast tego sterownik systemu plików mutuje jedynie drobne struktury metadanych:
| System plików | Co rm -rf Lub Shift+Delete Modyfikuje natychmiast |
Dlaczego odzyskiwanie jest trudniejsze w nowoczesnych wersjach | Najlepszy wektor odzyskiwania |
|---|---|---|---|
ext4 (Linux) |
1. Usuwa nazwę pliku z pozycji katalogu. 2. Ustawia i-węzeł i_dtime (znacznik czasu usunięcia) i zestawy i_links_count = 0.3. Kluczowe ext4 dziwactwo: Zerowanie i_block / range wskaźniki wewnątrz samej struktury i-węzła na dysku i oznaczają wolne bloki danych w bitmapie bloków. |
Inaczej ext3 (który jedynie zerował pośrednie wskaźniki blokowe), ext4 po usunięciu czyści drzewo zasięgu w głównej tabeli i-węzłów. Jednak ** jbd2 dziennik systemu plików nadal przechowuje starszą kopię dokładnie tego i-węzła z nienaruszonymi wskaźnikami zasięgu**, dopóki nie zapełni się bufor pierścieniowy dziennika. |
1. /proc/<pid>/fd/ jeśli otwarte.2. ext4magic / extundelete (analizuje jbd2 dziennik, aby znaleźć kopię i-węzła sprzed usunięcia, zanim dziennik sam się nadpisze).3. Rzeźba z surowego bloku ( photorec). |
XFS (RHEL / CentOS / Rocky / Unraid) |
Usuwa wpis katalogu B+tree, zaznacza i-węzeł di_mode = 0 (bezpłatnie) i zwraca zakresy danych bezpośrednio do Grupy Alokacyjnej (AG) wolne przestrzenie B+drzewa (cntbt / bnobt). |
XFS agresywnie zeruje rekordy zasięgu wewnątrz zwolnionych i-węzłów (di_u) i szybko przetwarza i-węzły w równoległych grupach alokacji. |
1. /proc/<pid>/fd/ jeśli otwarte.2. Kontrola dziennika metadanych ( xfs_logprint) lub xfs_irecover / surowa rzeźba z podpisem pliku (photorec, scalpel). |
NTFS (Windows 10 / 11 / Serwer) |
Odwraca In-Use flaga (0x01 -> 0x00) w 1024 bajtach (1 kilobajcie) $MFT (Master File Table) nagłówek rekordu i oznacza, że klaster działa swobodnie w pliku $Bitmap plik. Nazwa pliku, $DATA wskaźniki runlist i małe pliki rezydentne (poniżej 700 bajtów) pozostają całkowicie nienaruszone wewnątrz pliku $MFT rekord. |
Jeśli dysk pozostanie zamontowany w systemie Windows, usługi działające w tle (SearchIndexer.exe, svchost.exe, Aktualizacja systemu Windows, $UsnJrnli Podgląd zdarzeń) przydziel nowe $MFT rekordy, które nadpisują zwolnione $MFT gniazdo i dysk SSD TRIM natychmiast zeruje nieprzydzielone klastry. |
1. Kopie w tle (vssadmin).2. ntfsundelete / TestDisk / DMDE / UFS Explorer (odczytuje nienaruszony plik $DATA runlist bezpośrednio z nieprzydzielonych $MFT gniazdo). |
APFS (macOS) |
Kopiuj przy zapisie (CoW) B-tree usuwa rekord zasięgu pliku i oznacza, że zbiór kluczy nie jest przywoływany. |
Szyfrowanie sprzętowe poszczególnych plików (T2 / M1-M4) plus dysk SSD TRIM niszczy nieprzydzielone zakresy, chyba że istnieje lokalna migawka. |
1. lsof +L1 jeśli otwarte.2. Lokalne migawki APFS ( tmutil listlocalsnapshots /).3. Chodzenie po superblokach w punktach kontrolnych. |
Btrfs & ZFS (Linux/BSD/NAS) |
Kopiuj przy zapisie (CoW) drzewo aktualizuje wolne bloki tylko wtedy, gdy żadna migawka nie odwołuje się do tej grupy transakcji (txg). |
Bez migawek rzeźba CoW jest złożona, chociaż ZFS txg wycofanie (zpool import -F -T) lub btrfs restore może uratować drzewa. |
1. Istniejące migawki (.zfs/snapshot/ Lub .snapshots/).2. Grupa transakcji ( txg) wycofanie. |
2. Dysk SSD TRIM (Discard / Deallocate) Bomba zegarowa¶
Na obracającym się dysku twardym (HDD), sektory pozostają czytelne do momentu nadpisania. Na dysku SSD (SATA Lub NVMe), gdy system plików wydaje plik a TRIM Lub Deallocate polecenie:
- Większość kontrolerów NVMe implementuje Deterministyczny odczyt zera po TRIM (DRAT / DZAT), powrót 0x00000000 (wszystkie zera) z warstwy tłumaczenia Flash (FTL) natychmiast po otrzymaniu TRIM, nawet przed uruchomieniem fizycznego usuwania pamięci NAND.
- Dlaczego systemy Linux często przetrwają TRIM: Większość dystrybucji Linuksa (Ubuntu, Debian, Fedora, RHEL) nie włączaj ciągłego czasu montowania discard domyślnie; uruchamiają timer tygodniowy (fstrim.timer). Jeśli ponownie zamontujesz w trybie tylko do odczytu (ro) wcześniej fstrim.timer działa, dysk SSD nie odmapował jeszcze tych bloków.
Faza 1: Ratowanie usuniętych plików, które nadal są otwarte przez działający proces (/proc/<pid>/fd/)¶
Przed ponownym uruchomieniem, odmontowaniem lub zamknięciem pojedynczego okna w systemie Linux lub macOS sprawdź, czy nie ma otwartych deskryptorów plików. W systemach POSIX rm dzwoni unlink(). Jądro śledzi dwa liczniki dla każdego i-węzła:
1. i_nlink: Wpisy katalogu na dysku wskazujące i-węzeł.
2. i_count: Aktywne procesy utrzymujące otwarty i-węzeł w pamięci.
Złota zasada POSIX: Jądro nigdy nie zwalnia i-węzła ani nie zwalnia bloków dyskowych, dopóki OBIE i_nlink == 0 ORAZ i_count == 0. Jeśli usunięta baza danych, dziennik, plik wideo lub kod są nadal otwarte w jakimkolwiek procesie, 100 procent tego pliku pozostaje nienaruszone na dysku.
Krok po kroku /proc/<pid>/fd/ ekstrakcja w systemie Linux¶
- Znajdź każdy usunięty plik, który nadal jest otwarty w dowolnym procesie:
(Lub filtruj według nazwy pliku:
sudo lsof | grep -i "(deleted)" | grep -i "filename") - Przeczytaj
lsofkolumny wyjściowe:UwagaCOMMAND 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) i usuń końcową literę (u,r,w) odFD(14u->14). - ** Skopiuj surowy plik z
/proc/<pid>/fd/<fd_num>do pamięci RAM (/dev/shm) lub dysk zewnętrzny**: Nigdy nie zapisuj odzyskanego pliku z powrotem na partycję, której dotyczy problem. Napisz do/dev/shm(dysk RAM) lub zewnętrzny dysk USB: - ** Ratuj wiele otwartych, usuniętych plików z bazy danych lub kontenera (
PID=4182) w jednej pętli**: - Bufory ratunkowe i lokalna historia IDE (
vim,VS Code,Cursor,JetBrains): - Nie zamykaj otwartych zakładek edytora: Zapisz otwarte bufory bezpośrednio w
/dev/shmlub pendrive'a. - Kod VS / Kursor / Historia lokalna VSCodium: Przechowuje w środku automatyczne kopie każdego zapisanego pliku ze znacznikiem czasu
-/.config/Code/User/History/(Linux),-/Library/Application Support/Code/User/History/(macOS) lub%APPDATA%\Code\User\History\(Windows), całkowicie poza folderem projektu. Nawet porm -rf -/my-projectLubgit clean -fdx, pliki kodu pozostaną w środku nienaruszoneUser/History/zentries.jsonmanifest mapujący każdy plik z powrotem na jego pierwotną ścieżkę. - Idea JetBrains (
IntelliJ,PyCharm,WebStorm): Przechowuje w środku automatyczną historię-/.cache/JetBrains/<IDE>/LocalHistory/. - Git (
git reset --hardLubgit branch -Dz.git/nienaruszony): Uruchomgit reflogLubgit fsck --lost-foundnatychmiast, aby odzyskać wiszące w środku plamy.git/objects/.
Faza 2: Zamrażanie systemu plików Tylko do odczytu (ro) bez nadpisywania nieprzydzielonych bloków¶
Po wyodrębnieniu wszelkich otwartych deskryptorów plików z /proc (lub zweryfikowano, że żaden nie istnieje), Twoim bezpośrednim priorytetem jest powstrzymanie systemu operacyjnego przed zapisaniem ani jednego dodatkowego sektora na partycję.
1. Linux: ponowne montowanie partycji danych a katalog główny (/) Partycja tylko do odczytu¶
- Scenariusz A: usunięte pliki znajdowały się na osobnej partycji (
/home,/var,/data,/mnt/storage): - Natychmiast spróbuj wykonać czyste ponowne zamontowanie w trybie tylko do odczytu:
- Jeśli
mountmówimount point is busy, zidentyfikować i zatrzymać procesy pisania (sudo fuser -vm /homenastępniesudo fuser -km -TERM /home), a następnie natychmiast uruchom ponowniesudo mount -o remount,ro /home. - Scenariusz B: usunięte pliki znajdowały się w katalogu głównym (
/) partycja (lub nie możesz zabić zajętych procesów): Nie biegajsudo rebootLubsudo shutdown -h now, bo normalnesystemdzamknięcie zapisuje megabajtyjournaldbezpośrednio do dzienników zamykania, losowych nasion i plików stanu usług/. Zamiast tego uruchom Awaryjne ponowne montowanie Linux Kernel Magic SysRq w trybie tylko do odczytu: s(Emergency Sync): Opróżnia oczekujące metadane systemu plików w pamięci, aby superblok był spójny.u(Emergency Remount Read-Only): Wymusza ponowne zamontowanie każdego zamontowanego systemu plików na komputerze jako tylko do odczytu (ro) wewnątrz jądra, nawet jeśli procesy nadal mają otwarte pliki do zapisu. Sprawdź to/jest teraz tylko do odczytugrep " / " /proc/mounts.
2. Obrazowanie zamrożonego zdalnego serwera Cloud (AWS EC2, GCP, DigitalOcean, Hetzner) przez SSH¶
Jeśli przypadkowo pobiegłeś rm -rf na zdalnym serwerze w chmurze, do którego nie można podłączyć dysku USB:
1. Uruchom ponowne podłączenie Magic SysRq w trybie tylko do odczytu (echo s > /proc/sysrq-trigger && echo u > /proc/sysrq-trigger). Twoja istniejąca sesja SSH pozostaje aktywna, ponieważ SSH działa w pamięci RAM i /dev/pts (devpts) to pseudoterminalny system plików wirtualnej pamięci RAM.
2. Na platformach chmurowych (AWS EC2, GCP, Azure, DigitalOcean) natychmiast wykonaj atomową migawkę EBS / migawki woluminu blokowego z konsoli chmury lub zatrzymaj instancję, odłącz wolumin główny i podłącz go w trybie tylko do odczytu (/dev/xvdf) do czystej ratunkowej maszyny wirtualnej.
3. Na zdalnym serwerze typu bare-metal prześlij strumieniowo skompresowany, nieprzetworzony obraz zamrożonej partycji tylko do odczytu bezpośrednio przez SSH do lokalnej stacji roboczej:
ssh root@remote-server-ip "dd if=/dev/nvme0n1p2 bs=4M status=progress | zstd -1" > ~/rescued_partition.img.zst
Faza 3: Sprawdzanie ukrytego kopiowania przy zapisie (CoW) migawki i kopie w tle przed rzeźbieniem¶
Przed przeskanowaniem terabajtów nieprzydzielonych sektorów sprawdź, czy Twój system operacyjny automatycznie utworzył ukrytą migawkę z określonego momentu:
1. macOS: Migawki APFS lokalnego komputera czasu (tmutil)¶
Nawet jeśli Twój zewnętrzny dysk Time Machine był odłączony od tygodni, macOS automatycznie zapisuje cogodzinne lokalne migawki APFS z funkcją kopiowania przy zapisie na Twoim wewnętrznym dysku SSD (com.apple.TimeMachine.YYYY-MM-DD-HHMMSS.local) za każdym razem, gdy konfigurowana jest Time Machine lub przed aktualizacją systemu macOS:
1. Lista wszystkich lokalnych migawek w Terminalu:
rm -rf, zamontuj go w trybie tylko do odczytu i skopiuj pliki:
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: Kopie woluminów w tle (VSS)¶
- Otwórz Wiersz poleceń administratora i uruchom:
- Jeśli kopia w tle (
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1) poprzedza TwójShift+Delete, połącz go z folderem i skopiuj pliki na dysk USB:
3. Linux: Btrfs, ZFS, i LVM Migawki¶
- Wł
Btrfs(systemy Fedora, openSUSE, Synology, Timeshift/Snapper): Uruchomsudo btrfs subvolume list -s /i sprawdź/.snapshots/Lub/run/timeshift/backup/timeshift-btrfs/snapshots/. - Wł
ZFS(Ubuntu ZFS, Proxmox, TrueNAS): Uruchomzfs list -t snapshoti kopiuj pliki bezpośrednio z/path/to/dataset/.zfs/snapshot/.
Faza 4: Odzyskiwanie i-węzłów, dzienników i MFT krok po kroku według systemu plików¶
Jeśli nie ma deskryptora otwartego pliku (/proc/<pid>/fd/) i nie istniała żadna migawka, uruchom komputer z SystemRescue lub Ubuntu Live USB, podłącz zewnętrzny dysk twardy USB (/mnt/external) i utwórz klon po bicie niezamontowanej partycji ofiary (/dev/nvme0n1p2) najpierw:
/mnt/external/victim_partition.img więc oryginalny dysk nigdy nie jest modyfikowany.
1. Odzyskiwanie ext4 / ext3 na Linuksie (ext4magic i extundelete)¶
Kiedy rm -rf usuwa pliki na ext4, jądro zeruje wskaźniki drzewa zasięgu wewnątrz głównej tablicy i-węzłów. Jednak ext4jest jbd2 dziennik (zwykle o rozmiarze od 128 megabajtów do 1024 megabajtów) przechowuje historyczne kopie ostatnio zmodyfikowanych bloków i-węzłów. O ile ponownie zmontowałeś ro zanim duża aktywność dysku zawinęła bufor pierścieniowy dziennika, ext4magic wyodrębnia i-węzeł sprzed usunięcia z dziennika i rekonstruuje pliki z nienaruszonymi oryginalnymi nazwami plików i drzewami katalogów.
- Biegnij
ext4magicaby odzyskać wszystkie pliki usunięte w ciągu ostatnich 2 godzin (-a) wewnątrz ścieżki względnej (-f): (Pomiń wiodący ukośnik punktu montowania w-f: za/home/kmyers/projectna korzeniu/partycja, przejście-f home/kmyers/project; jeśli/homejest odrębną partycją, pass-f kmyers/project.) - Alternatywa: biegnij
extundeleteprzeciwko obrazowi:
2. Odzyskiwanie z systemu Windows NTFS po Shift+Delete (TestDisk i ntfsundelete)¶
Inaczej ext4, Okna NTFS NIE zeruje wskaźników zasięgu bloku (Data Runs) w głównej tabeli plików ($MFT) rejestruje usunięcie pliku. Kiedy naciśniesz Shift+Delete w systemie NTFS 1024 bajty $MFT wpis po prostu odwraca flagę nagłówka 0x01 (W użyciu) do 0x00 (Usunięte). Jego $FILE_NAME atrybut i $DATA lista uruchomieniowa klastra pozostaje w 100% nienaruszona, dopóki inny plik nie użyje jej ponownie $MFT miejsce:
- ** Używanie
TestDiskdla natychmiastowego NTFS$MFTprzywrócenie usunięcia z pełnymi ścieżkami folderów**: Wybierz[ Proceed ]->[ EFI GPT ]->[ Advanced ]-> zaznacz partycję NTFS ->[ Undelete ]. Przejdź do swojego folderu, naciśnija, aby wybrać usunięte pliki i naciśnijC(kapitałC), do którego chcesz je skopiować/mnt/external/recovered_ntfs/. - ** Używanie
ntfsundelete(ntfs-3g)**:
3. Odzyskiwanie XFS, APFSlub nadpisane dzienniki poprzez rzeźbienie w surowych blokach (PhotoRec i grep -a -b)¶
Kiedy znikną wskaźniki i-węzła (np. na XFS, APFS lub ext4 partycja, której dziennik został zawinięty), odzyskać dane poprzez skanowanie nieprzydzielonych bloków o wielkości 4096 bajtów (4 kilobajtów) w poszukiwaniu nagłówków/stopek plików lub unikalnych ciągów tekstowych:
| Co usunąłeś | Najlepsze narzędzie do surowego rzeźbienia i dokładne polecenie | Dlaczego to działa bez i-węzłów |
|---|---|---|
Kod źródłowy, konfiguracje, Markdown, zrzuty SQL, klucze SSH, JSON/YAML (Plain Text Files) |
grep -a -b -C 150 bezpośrednio względem surowego obrazu partycji:LC_ALL=C grep -a -b -C 150 "unique_function_name" /mnt/external/victim_partition.img > /mnt/external/carved_code.txt |
Zwykłe pliki tekstowe nie mają binarnych magicznych nagłówków, więc PhotoRec często je pomija. grep -a -b przeszukuje każdy nieprzetworzony bajt obrazu dysku pod kątem dowolnej unikalnej nazwy zmiennej lub ciągu znaków, który pamiętasz, że wpisałeś i wyświetla otaczające 300 linii surowych bloków dysku. |
Dokumenty, pliki PDF, pakiet Office (DOCX/XLSX), archiwa ZIP/TAR, obrazy, filmy, bazy danych SQLite |
PhotoRec (testdisk pakiet):sudo photorec /mnt/external/victim_partition.img -> [ File Opt ] -> [ Free ] (Nieprzydzielone miejsce) -> zapisz dane wyjściowe w /mnt/external/photorec_out/. |
Rozpoznaje ponad 480 nagłówków i stopek plików binarnych (%PDF-, PK\x03\x04 dla ZIP/DOCX/XLSX, SQLite format 3, JPEG/PNG/MP4) i ponownie składa sąsiadujące bloki, nawet jeśli wszystkie drzewa katalogów i i-węzły zostały wyzerowane. |
| Specyficzne i-węzły XFS i rzeźbienie w drzewie B | xfs_irecover Lub UFS Explorer Professional Recovery |
Skanuje grupy alokacji XFS (AGs) dla niepołączonych klastrów i-węzłów i sąsiadujących fragmentów zasięgu. |
Jak używać grep -a -b + dd aby uratować usunięty kod źródłowy lub .env plików w niecałe 2 minuty¶
Jeśli usunąłeś kod źródłowy, .env sekrety lub notatki o rozmiarze mniejszym niż 32 kilobajty:
1. Wyszukaj unikalny ciąg wewnątrz usuniętego pliku i wydrukuj jego dokładne przesunięcie bajtów (-b):
grep wyjścia 48291045312:def calculate_invoice_tax.
2. Podziel ten bajt przesunięty przez 4096 (48291045312 / 4096 = 11789805), cofnij się o 10 przecznic (11789795) i zrzuć 30 bloków (120 kilobajtów) surowego dysku wokół tego przesunięcia:
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 w dowolnym edytorze tekstu, aby wyodrębnić nienaruszony plik zwykłego tekstu.
Faza 5: Zapobieganie przyszłym katastrofom rm -rf i Shift+Delete wypadki¶
- Wymień interaktywny
rmztrash-cliirm -I --preserve-root=all: Zainstalujtrash-cli(trash-put,trash-list,trash-restore) i pseudonimrmdorm -I --preserve-root=allw/etc/bash.bashrci-/.zshrcdlatego przypadkowe usunięcie rekurencyjne powoduje wyświetlenie monitu raz przed rozłączeniem i-węzłów. - Chroń krytyczne katalogi produkcyjne za pomocą niezmiennego atrybutu systemu Linux (
chattr +i): Nawetroot(sudo rm -rf) nie może usunąć ani zmodyfikować zaznaczonego katalogu lub plikusudo chattr +i /path/to/critical_configdopóki nie uruchomi się administratorsudo chattr -i. - Włącz automatyczne lokalne kopiowanie przy zapisie (
CoW) Migawki (Btrfs/ZFS/APFS/Windows Shadow Copies): UżyjSnapperLubTimeshiftnaBtrfs,sanoidnaZFSlub kopie woluminów w tle dwa razy dziennie w systemie Windows (SystemPropertiesProtection.exe). - Utrzymuj zautomatyzowane kopie zapasowe 3-2-1 za pomocą niezmiennej pamięci zewnętrznej: Postępuj zgodnie z naszym przewodnikiem kopie zapasowe komputerów, strategia 3-2-1 i odzyskiwanie po awarii używając
resticLubborgbackupze zdalnymi repozytoriami umożliwiającymi tylko dołączanie.
Regionalne numery alarmowe i protokoły agencyjne¶
Chociaż przypadkowe usunięcie plików z komputera osobistego jest raczej sytuacją techniczną niż sprawą policji, przypadkowe lub złośliwe usunięcie mające wpływ na systemy opieki zdrowotnej, infrastrukturę miejską, dowody prawne na podstawie sądowego nakazu zabezpieczenia lub regulowane dane osobowe może skutkować obowiązkowym zgłaszaniem incydentów:
- Stany Zjednoczone i Kanada:
- Awaryjne zagrożenie życia / Awaria infrastruktury krytycznej: Wybierz
911jeśli czyszczenie systemu ma wpływ na opiekę nad pacjentem w szpitalu, wysyłkę służb ratunkowych lub fizyczne kontrole bezpieczeństwa przemysłowego. - Agencja ds. Cyberbezpieczeństwa i Bezpieczeństwa Infrastruktury (
CISA) (USA): Zgłoś zniszczenie danych infrastruktury krytycznej lub podejrzenie sabotażu wewnętrznego pod adresem1-844-Say-CISA(1-844-729-2472) lubcisa.gov/report. - Kanadyjskie Centrum Cyberbezpieczeństwa: Kontakt
1-833-CYBER-88(1-833-292-3788) w przypadku incydentów w infrastrukturze krytycznej. - Wielka Brytania:
- Służby ratunkowe: Wybierz
999(lub101w przypadku zgłoszeń policyjnych niezwiązanych z sytuacjami nadzwyczajnymi, jeśli usunięcie dotyczyło nieuprawnionego niewłaściwego użycia komputera zgodnie z Ustawą o niewłaściwym korzystaniu z komputera z 1990 r.). - Biuro Komisarza ds. Informacji (
ICO): Jeśli przypadkowe usunięcie trwale zniszczy dane osobowe bez możliwości odzyskania kopii zapasowej (co stanowi naruszenie dostępności zgodnie z brytyjskim RODO), sprawdź, czy powiadomienie ICO (0303 123 1113) w ciągu 72 godzin. - Unia Europejska:
- Służby ratunkowe: Wybierz
112we wszystkich krajach członkowskich UE. - Artykuł 33 RODO Zgłaszanie naruszeń dostępności: na mocy Europejskiej Rady Ochrony Danych (
EDPB) wytycznych, przypadkowe trwałe zniszczenie danych osobowych bez możliwej do odzyskania kopii zapasowej jest klasyfikowane jako naruszenie danych osobowych (utrata dostępności) i może wymagać zgłoszenia do krajowego organu ochrony danych (DPA) w ciągu 72 godzin. - Australia i Nowa Zelandia:
- Służby ratunkowe: Wybierz
000w Australii lub111w Nowej Zelandii. - Australijskie Centrum Bezpieczeństwa Cybernetycznego (
ACSC): Zadzwoń1300 CYBER1(1300 292 371) w przypadku pomocy dla przedsiębiorstw lub infrastruktury. - Indie i Azja i Pacyfik:
- Indie (
CERT-In/ Krajowa infolinia ds. cyberprzestępczości): Wybierz112w przypadku reakcji w sytuacjach awaryjnych lub1930w przypadku incydentów cyberprzestępczych; incydenty korporacyjne objęte mandatami CERT-In należy zgłaszać w ciągu 6 godzin doincident@cert-in.org.in.
Często zadawane pytania¶
Dlaczego nie extundelete Lub ext4magic znajdź moje nazwy plików ext4 mimo że dość szybko przestałem korzystać z komputera?¶
Kiedy plik zostanie usunięty wew4, jądro Linuksa natychmiast zeruje wskaźniki drzewa zakresów w tablicy i-węzłów na dysku, dzięki czemu system plików wie, że i-węzeł nie ma przydzielonych zakresów. Narzędzia takie jak ext4magia i rozszerzyć polegać na znalezieniu starszej, sprzed usunięcia kopii tego i-węzła w pliku wew4 dziennik (jbd2). Jeśli plik został utworzony i usunięty, a jego i-węzeł nie przeszedł niedawno przez dziennik lub jeśli intensywne zapisy w tle zawinęły bufor pierścieniowy dziennika o wielkości od 128 MB do 1 GB przed ponownym podłączeniem w trybie tylko do odczytu, kopia dziennika zniknęła. W takim przypadku musisz przejść na rzeźbę z surowymi blokami (PhotoRec) lub wyszukiwanie bajtów w postaci zwykłego tekstu (grep -a -b), które bezpośrednio skanują nieprzydzielone bloki danych, bez konieczności używania metadanych i-węzłów.
Czy SSD TRIM zawsze niszczyć rm -rf Lub Shift+Delete pliki natychmiast?¶
Nie zawsze, zwłaszcza w systemie Linux i na dyskach zewnętrznych. W systemach Windows 10/11 i macOS z wewnętrznymi dyskami SSD NVMe system operacyjny zwykle wysyła wbudowany komunikat PRZYCIĘCIE / Usuń przydział polecenie do kontrolera SSD w ciągu kilku sekund od trwałego usunięcia, co powoduje, że warstwa translacji Flash dysku SSD (FTL), aby zwrócić zera (DZAT) dla tych bloków. Jednak większość dystrybucji Linuksa (Ubuntu, Debian, Fedora, RHEL) tak nie włączyć ciągły czas montowania odrzucić domyślnie; zamiast tego biegają fstrim.timer raz w tygodniu. Co więcej, wiele zewnętrznych obudów USB na SATA i USB na NVMe nie przechodzi PRZYCIĘCIE polecenia przez pamięć masową USB (BOT), a warstwy programowe RAID / LVM / LUKS często blokują odrzucić domyślnie przejście, chyba że zostało to wyraźnie skonfigurowane (`issue_discards = 1` Lub `allow-discards`).
Co się stanie, jeśli moja partycja Linux jest zaszyfrowana za pomocą LUKS (dm-crypt) lub korzysta z mojego dysku Windows BitLocker: czy nadal mogę wycinać usunięte pliki?¶
Tak, pod warunkiem, że masz hasło szyfrowania lub klucz odzyskiwania i odblokujesz kontener w trybie tylko do odczytu. Nigdy nie biegaj fotoreportaż, ext4magialub dysk testowy względem nieprzetworzonej, zaszyfrowanej partycji fizycznej (/dev/nvme0n1p2), ponieważ zaszyfrowany tekst zaszyfrowany wygląda jak losowy szum. Zamiast tego uruchom komputer z Live USB i odblokuj kontener tryb tylko do odczytu (dla LUKSÓW: Sudo cryptsetup otwórz --readonly /dev/nvme0n1p2 crypt_rescue; dla funkcji BitLocker w systemie Linux: delocker -r lub odblokuj tryb tylko do odczytu w WinPE) i wykonaj obraz lub zeskanuj odszyfrowane wirtualne urządzenie mapujące (/dev/mapper/crypt_rescue).
Dlaczego ciągnie za przewód zasilający w systemie Windows C:\ bezpieczniej po wypadku Shift+Delete niż kliknięcie „Zamknij”?¶
Kiedy klikniesz Start > Zamknij w systemie Windows system operacyjny wykonuje setki megabajtów zapisu na dysku przed wyłączeniem zasilania: opróżnia gałęzie rejestru, zapisuje zdarzenia zamknięcia w .evtx rejestruje, aktualizuje dziennik USN ($UsnJrnl), usuwa lub zmienia rozmiar pagefile.sys, a w systemach szybkiego uruchamiania zapisuje wielogigabajtowy plik hibernacji (hiberfil.sys) bezpośrednio w nieprzydzielonych klastrach NTFS. Te zapisy zamykające często zastępują dokładnie nieprzydzielone $MFT rekordy i klastry danych uwolnione przez Twoje Shift+Usuń. Wymuszenie natychmiastowego wyłączenia zasilania (przytrzymanie przycisku zasilania przez 10 sekund lub wyciągnięcie wtyczki) powoduje natychmiastowe zatrzymanie wszystkich zapisów; System plików NTFS pozostanie całkowicie czytelny po uruchomieniu z ratunkowego nośnika USB z systemem Linux lub WinPE w trybie tylko do odczytu.
Jak mogę odzyskać usunięte .env plik, klucz SSH lub plik kodu źródłowego PhotoRec zignorowane?¶
PhotoRec szuka binarnych nagłówków magicznych bajtów (takich jak %PDF, PNGlub PK dla plików ZIP/Office), dlatego często pomija lub łączy w jednym miejscu krótkie pliki tekstowe, takie jak .środka konfiguracje, kod źródłowy Python/JavaScript, uwagi Markdown i klucze SSH. Aby odzyskać dowolny plik tekstowy z obrazu dysku lub partycji tylko do odczytu, uruchom LC_ALL=C grep -a -b -C 100 "UNIQUE_TEXT_FROM_FILE" /dev/nvme0n1p2 > /dev/shm/found.txt. Jeśli znasz nazwę zmiennej (np STRIPE_SECRET_KEY= Lub ROZPOCZNIJ OTWÓRZ KLUCZ PRYWATNY), grep -a -b skanuje surowe sektory z szybkością kilku gigabajtów na sekundę i drukuje dokładnie otaczające je bloki dysku.
Gdybym przypadkowo pobiegł rm -rf / lub usunięte /usr Lub /lib na Linuksie, a teraz nawet nie ls, cplub sudo działa, jak uruchamiać polecenia w otwartym terminalu?¶
Jeśli wytarłeś /kosz Lub /lib będąc istniejącym walnąć Lub zsz terminal jest nadal otwarty w pamięci RAM, np. zewnętrzne pliki binarne /bin/ls Lub /bin/cp nie uda się z Nie ma takiego pliku ani katalogu, ale wbudowane powłoki nadal działają całkowicie w pamięci RAM. Możesz użyć echo * zamiast ls, printf "%s\n" "$( /dev/shm/uratowany zamiast por, i echo u > /proc/sysrq-trigger (jeśli Twoja powłoka jest już rootem), aby uruchomić ponowne montowanie jądra w trybie tylko do odczytu przed wyłączeniem i uruchomieniem SystemRescue Live USB.
Powiązane przewodniki¶
- Przypadkowe usunięcie plików, sformatowanie dysku i odzyskanie zdjęć
- Nagły tryb tylko do odczytu dysków SSD i NVMe, 0% zapasowych bloków i funkcja ratunkowa z wyłączeniem TRIM
- Awaria dysku twardego i odzyskiwanie danych
- Awaria macierzy RAID NAS, awaria wielu dysków i odzyskiwanie ZFS/Btrfs
- Kopie zapasowe komputerów, strategia 3-2-1 i odzyskiwanie po awarii
- Numery alarmowe według kraju
Źródła i oficjalne wytyczne¶
- Narodowy Instytut Standardów i Technologii (
NIST) (Stany Zjednoczone): Publikacja specjalna 800-86: Przewodnik po integracji technik kryminalistycznych z reagowaniem na incydenty oraz SP 800-88 Rev. 1: Wytyczne dotyczące oczyszczania nośników (ATA TRIM / NVMe Deallocate Behaviour). - Organizacja jądra Linuksa (
kernel.org): Dokumentacja systemu plików Ext4 (przydzielanie bloków i i-węzłów,jbd2Dziennikarstwo iprocfs/proc/<pid>/fd/Semantyka deskryptora pliku) i klucz żądania systemu Linux Magic (sysrq.txt). - CGSecurity (
TestDisk&PhotoRecOficjalna dokumentacja) iext4magicPodręcznik źródłowy: Wyodrębnianie i-węzłów dziennika i wycinanie nieprzydzielonego zakresu na woluminach ext3/ext4 i NTFS. - Agencja ds. Cyberbezpieczeństwa i Bezpieczeństwa Infrastruktury (
CISA) (Stany Zjednoczone): Najlepsze praktyki w zakresie reagowania na incydenty i kryminalistycznego przechowywania dowodów ulotnych/nieulotnych. - Agencja Unii Europejskiej ds. Cyberbezpieczeństwa (
ENISA): Przewodnik dobrych praktyk w zakresie kryminalistyki cyfrowej i konserwacji nośników danych.