Skip to content

Linux, macOS немесе Windows жүйесінде кездейсоқ rm -rf немесе Shift-Delete: бірден оқуға арналған қайта орнату

Төтенше нөмірлер елге қарай әр түрлі болады. Бұл бетте Америка Құрама Штаттары мен Канадаға арналған 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 Ұлыбританияда) немесе біздің халықаралық анықтамалықты тексеріңіз шұғыл нөмірлер.

Мұны қазір жасаңыз

  1. Басу Ctrl+C жою пәрмені әлі де іске қосылса және кез келген ашық терминал терезелерін, мәтіндік редакторларды, медиа ойнатқыштарды немесе дерекқор демондарын ЖАБМАЙДЫ: егер іске қосылған бағдарлама болса (nginx, postgres, mysqld, vim, code, python, tail, немесе бейне ойнатқыш) әлі де жадта жойылған файл ашық болса, Linux немесе macOS ядросы файлдың деректер блоктарын сол процесс өзінің файл дескрипторын жапқанша сақтайды. Қолданбаны жабу немесе машинаны дәл қазір қайта жүктеу сілтемелер санын бірден босатады (i_nlink == 0) және блоктың нақты бөлінуін іске қосыңыз.
  2. Linux жүйесін қайта орнату немесе өшіру алдында тексеріңіз /proc/<pid>/fd/ жұмыс істеп тұрған процесс арқылы әлі ашық тұрған кез келген жойылған файлдарды құтқару үшін дәл қазір: Іске қосу sudo lsof +L1 (бұл сілтемелер саны 1-ден аз болатын барлық ашық файлдарды тізімдейді, яғни олардың байланысы жойылған rm әлі ашық) және олардың өңделмеген мазмұнын жедел жад/ядро кэшінен бөлек дискіге немесе дереу көшіріңіз /dev/shm (tmpfs RAM дискі) пайдалану cp /proc/<pid>/fd/<fd_number> /dev/shm/rescued_file.
  3. Зақымдалған бөлімді тек оқуға арналған (ro) бірден ОЖ ядросы бөлінбеген блоктарға журнал журналдарының немесе уақытша файлдардың басқа бір байтты жаза алмайды:
  4. Linux жүйесінде (ext4, XFS, Btrfs): Жүгіру sudo mount -o remount,ro /path/to/mountpoint (мысалы, sudo mount -o remount,ro /home немесе sudo mount -o remount,ro /).
  5. Егер mount -o remount,ro -мен сәтсіздікке ұшырайды mount point is busy сіздің тамырыңызда (/) бөлім: іске қосу арқылы Magic SysRq арқылы ядроның шұғыл түрде тек оқуға арналған қайта қосылуын іске қосыңыз echo u | sudo tee /proc/sysrq-trigger (бұл барлық орнатылған файлдық жүйелерді процестерді жоймай немесе ашық құлыптарды күтпей-ақ бірден оқу үшін қайта орнатуға мәжбүр етеді).
  6. macOS жүйесінде (APFS / HFS+): Жүгіру sudo diskutil mount readOnly /Volumes/TargetVolume жүктелмейтін көлемдер үшін немесе файлдар сіздің негізгі файлыңызда болса Data көлемі (/System/Volumes/Data), фондық Spotlight функциясын тоқтату үшін Touch ID / Қуат түймесін 10 секунд ұстап тұру арқылы қуатты дереу күштеп өшіріңіз (mds_stores) және fseventsd жазады.
  7. Windows жүйесінде (NTFS / ReFS): Егер жойылған файлдар қосымша дискіде болса (D:, E:), Әкімші пәрмен жолын ашыңыз және дыбыс деңгейін тек оқуға арналған арқылы құлыптаңыз diskpart (select volume D, attributes volume set readonly). Егер файлдар қосулы болса C:\, Windows жүйесін қалыпты түрде өшірмеңіз (қалыпты өшіру жүздеген мегабайт тізбе ұяшықтарын, оқиғалар журналдарын және босатылған бет файлының жаңартуларын жазады. MFT кластерлер); орнына жұмыс үстелінің қуат сымын тартыңыз немесе қуатты лезде өшіру үшін ноутбуктың қуат түймесін 10 секунд басып тұрыңыз.
  8. SSD алдын алу TRIM (discard / UNMAP) бөлінбеген флэш-беттерді нөлге келтіруден: Егер диск NVMe немесе SATA SSD болса және үздіксіз дискімен орнатылған болса. discard (немесе Windows/macOS жоспарланған болса TRIM файл жойылғаннан кейін дереу), кесу қуаты немесе қайта орнату ro ОЖ-ны қосымша кезекке қоюды дереу тоқтатады NVME_DSM_ATTR_DEALLOCATE пәрмендері және SSD өтпейтін USB-NVMe көпір адаптеріне орналастыру TRIM қалпына келтіру кезінде контроллердің фондық қоқыс жинағының қалпына келтірілетін блоктарды өшіруіне жол бермейді.
  9. Сыртқы Live 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) және файлдарыңызды кескіннен кесіңіз немесе қалпына келтірілген файлдарды қатаң түрде екінші физикалық дискіге жазыңыз.
  10. Жергілікті файлдық жүйенің жасырын суреттерін тексеріңіз (Btrfs, ZFS, LVM, macOS APFS Time Machine жергілікті суреті және Windows көлемінің көлеңкелі көшірмелері) өңделмеген секторларды кесуге сағат жұмсамас бұрын: Көптеген жүйелер уақыттың атомдық блок сілтемелерін тыныш сақтайды (tmutil listlocalsnapshots / macOS жүйесінде, vssadmin list shadows Windows жүйесінде, zfs list -t snapshot, немесе btrfs subvolume list -s /) лезде 100 пайыз қалпына келтіруге мүмкіндік береді rm -rf немесе Shift+Delete өңделмеген бөлінбеген кластерлерге қол тигізбестен каталогтар.

Danger

Қалпына келтіру бағдарламалық құралын ешқашан орнатпаңыз (apt install extundelete, brew install testdisk, немесе Chrome/Edge арқылы Recuva/R-Studio қолданбасын файлдар жаңа ғана жойылған бөлімге жүктеп алу: 50 мегабайт (0,05 гигабайт) орнатушыны жүктеп алу және мыңдаған кітапхана файлдарын қаптамадан шығару C:\ немесе / файлдық жүйе бөлушісін нақты бөлінбеген блоктарды басып алуға мәжбүр етеді және MFT / кездейсоқ жою арқылы жаңа ғана босатылған inode жазбалары. Әрбір пакетті орнату, шолғышты жүктеп алу немесе зақымдалған бөлімде қалыпты операциялық жүйені қайта жүктеу гигабайт қалпына келтірілетін деректерді біржола қайта жазады.


Шешім ағашы: кездейсоқ жағдайдан кейін дереу триаж rm -rf немесе Shift+Delete

Байланыстырылмаған деректер блоктарының мүмкін болатын ең жоғары пайызын сақтау үшін жоюды тапқаннан кейін алғашқы 60 секунд ішінде осы шешім ағашын орындаңыз:

flowchart TD
    Start["Кездейсоқ rm -rf, find -delete немесе Shift+Delete Орындалды"] --> OpenCheck{"Кез келген орындалатын процесс (ДБ, редактор, сервер, құйрық) жойылған файлды әлі де ашуы мүмкін бе?"}

    OpenCheck -->|"Иә (Linux/macOS әлі жұмыс істейді)"| ProcRescue["1-ҚАДАМ: sudo lsof +L1 дереу іске қосыңыз және /proc/PID/fd/N файлынан RAM дискісіне (/dev/shm) немесе сыртқы USB файлына ашық файл дескрипторларын көшіріңіз."]
    OpenCheck -->|"Жоқ (немесе барлық файлдар жабылған)"| SnapCheck{"Көлем ZFS, Btrfs, APFS жергілікті суреттерін немесе Windows көлеңкелі көшірмелерін пайдаланады ма?"}

    ProcRescue --> FreezeOS["2-ҚАДАМ: Барлық дискідегі жазуларды дереу тоқтатыңыз"]
    SnapCheck -->|"Иә: сиыр суреті бар"| FreezeOS
    SnapCheck -->|"Жоқ: Стандартты ext4, XFS немесе Snapshots жоқ NTFS"| FreezeOS

    FreezeOS --> OSBranch{"Қандай операциялық жүйе және бөлім зақымдалды?"}

    OSBranch -->|"Түбірлік емес Linux (/үй, /деректер)"| RemountRO["Іске қосу: sudo mount -o remount, ro /mountpoint"]
    OSBranch -->|"Linux Root (/) бөлімі"| SysRqRO["Іске қосу: echo u | sudo tee /proc/sysrq-trigger (ядроның төтенше жағдайда тек оқуға арналған қайта орнату)"]
    OSBranch -->|"Windows C: Drive немесе macOS Boot APFS"| HardPower["Қалыпты жағдайда ӨШІРМЕҢІЗ: өшіру журналын/бет файлын жазуды болдырмау үшін қуат түймесін 10 секунд ұстап тұрыңыз немесе қуат сымын тартыңыз."]
    OSBranch -->|"Қосымша сыртқы немесе деректер дискісі"| UnmountSec["Дереу ажыратыңыз/Дыбыс деңгейін тек оқу үшін орнатыңыз және дискіні ажыратыңыз"]

    RemountRO --> LiveBoot["3-ҚАДАМ: Сыртқы SystemRescue Live USB жүктеу және сыртқы дискіге ddrescue бөлімін клондау"]
    SysRqRO --> LiveBoot
    HardPower --> LiveBoot
    UnmountSec --> LiveBoot

    LiveBoot --> FSRecovery{"Файлдық жүйе бойынша қалпына келтіру әдісін таңдаңыз"}
    FSRecovery -->|"ext4 / ext3"| ExtRec["Journal Inode Recovery: ext4magic / extundelete / debugfs"]
    FSRecovery -->|"XFS / APFS / Журналдан тыс"| CarveRec["Қолтаңба және үстіңгі деректеме/төменгі деректеме оюы: photorec / скальпель / foremost / xfs_irecover"]
    FSRecovery -->|"NTFS (Windows)"| NtfsRec["MFT жазбасын талдау: ntfsundelete / TestDisk / UFS Explorer / DMDE"]

Неліктен әрбір секунд сайын оқу-жазу орнатылған (rw) жойылған файлдарды жояды

Неліктен тек оқуға арналған қайта орнату немесе қатты қуатты өшіру деректеріңіз үшін өмір немесе өлім шешімі екенін түсіну үшін іске қосылған кезде әрбір заманауи файлдық жүйенің шын мәнінде не өзгертетінін тексеріңіз. unlink() (rm) немесе DeleteFileW() (Shift+Delete):

1. Ішінде не болады ext4, XFS, APFS, және NTFS жою кезінде

Файл жойылған кезде, ешбір тұтынушы операциялық жүйесі дискінің енгізу/шығару өткізу қабілеттілігін 10 гигабайт (10,7 миллиард байт) дерекқорға немесе бейне файлға нөлдерді жазуға жұмсамайды. Оның орнына, файлдық жүйе драйвері тек шағын метадеректер құрылымдарын мутациялайды:

Файлдық жүйе Не rm -rf немесе Shift+Delete Бірден өзгертеді Неліктен қазіргі нұсқаларда қалпына келтіру қиынырақ? Ең жақсы қалпына келтіру векторы
ext4 (Linux) 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+tree каталог жазбасын жояды, инодты белгілейді 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) 1024 байтта (1 килобайт) $MFT (Негізгі файл кестесі) тақырыбын жазады және кластердің тегін жұмыс істейтінін белгілейді $Bitmap файл. Файл аты, $DATA орындалу тізімінің көрсеткіштері және шағын резиденттік файлдар (700 байттан аз) ішінде толығымен бұзылмаған $MFT рекорд. Диск Windows жүйесінде орнатылған күйде қалса, фондық қызметтер (SearchIndexer.exe, svchost.exe, Windows жаңартуы, $UsnJrnl, және Оқиғаларды қарау құралы) жаңасын бөледі $MFT босатылғанның үстінен жазатын жазбалар $MFT ұясы және SSD TRIM бөлінбеген кластерлерді бірден нөлге теңейді. 1. Көлеңкелі көшірмелер (vssadmin).
2. ntfsundelete / TestDisk / DMDE / UFS Explorer (бұзылмай оқиды $DATA орындалмаған тізімнен тікелей $MFT ұясы).
APFS (macOS) Жазу бойынша көшіру (CoW) B-ағаш файл ауқымы жазбасын жояды және пернелер қалтасын сілтемесіз белгілейді. Әр файлдың аппараттық шифрлауы (T2 / M1-M4) плюс SSD TRIM жергілікті сурет болмаса, бөлінбеген экстенттерді жояды. 1. lsof +L1 ашық болса.
2. Жергілікті APFS суреттері (tmutil listlocalsnapshots /).
3. Бақылау пункті суперблокпен жүру.
Btrfs & ZFS (Linux / BSD / NAS) Жазу бойынша көшіру (CoW) транзакция тобына ешқандай сурет сілтеме жасамаса ғана ағаш тегін блоктарды жаңартады (txg). Суреттерсіз сиырды ою күрделі, бірақ ZFS txg кері қайтару (zpool import -F -T) немесе btrfs restore ағаштарды құтқара алады. 1. Қолданыстағы суреттер (.zfs/snapshot/ немесе .snapshots/).
2. Мәміле тобы (txg) кері қайтару.

2. SSD TRIM (Discard / Deallocate) Уақытты бомба

Айналмалы қатты дискіде (HDD), секторлар қайта жазылмайынша оқылатын болады. SSD дискісінде (SATA немесе NVMe), файлдық жүйе шығарған кезде a TRIM немесе Deallocate пәрмен: - Көптеген NVMe контроллерлері TRIM-ден кейін детерминистикалық оқу нөлін (DRAT / DZAT), қайтып келеді 0x00000000 (барлық нөлдер) Flash Translation Layer (FTL) алғаннан кейін бірден TRIM, физикалық NAND қоқыс жинауы іске қосылғанға дейін. - Неліктен Linux жүйелері жиі аман қалады TRIM: Linux дистрибутивтерінің көпшілігі (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/ Linux жүйесінде экстракция

  1. Кез келген процесте әлі ашық болған әрбір жойылған файлды табыңыз:
    sudo lsof +L1
    
    (Немесе файл аты бойынша сүзгі: sudo lsof | grep -i "(deleted)" | grep -i "filename")
  2. ** оқыңыз 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).
  3. Шикі файлды көшіріңіз /proc/<pid>/fd/<fd_num> жедел жадқа (/dev/shm) немесе сыртқы диск: Ешқашан құтқарылған файлды зардап шеккен бөлімге қайта жазбаңыз. -ге жазыңыз /dev/shm (RAM дискі) немесе сыртқы USB дискісі:
    mkdir -p /dev/shm/rescued_files
    sudo cp /proc/4182/fd/14 /dev/shm/rescued_files/16399_recovered
    
  4. Дерекқордан немесе контейнерден бірнеше ашық жойылған файлдарды құтқару (PID=4182) бір циклде:
    sudo mkdir -p /dev/shm/rescued_db
    for fd in /proc/4182/fd/*; do
      target=$(sudo readlink "$fd")
      if echo "$target" | grep -q "(deleted)"; then
        fd_num=$(basename "$fd")
        clean_name=$(echo "$target" | sed 's/ (deleted)//; s/\//_/g')
        sudo cp "$fd" "/dev/shm/rescued_db/fd_${fd_num}${clean_name}"
      fi
    done
    
  5. ** Құтқару буферлері және IDE жергілікті тарихы (vim, VS Code, Cursor, JetBrains)**:
  6. Ашық өңдегіш қойындыларын жаппаңыз: Ашық буферлерді тікелей мына жерде сақтаңыз /dev/shm немесе бас бармақ дискі.
  7. VS коды / курсор / VSCodium жергілікті тарих: ішінде әрбір сақталған файлдың автоматты уақыт белгісі бар көшірмелерін сақтайды -/.config/Code/User/History/ (Linux), -/Library/Application Support/Code/User/History/ (macOS) немесе %APPDATA%\Code\User\History\ (Windows), жоба қалтасынан толығымен тыс. Тіпті кейін rm -rf -/my-project немесе git clean -fdx, сіздің код файлдарыңыз ішінде өзгеріссіз қалады User/History/ а entries.json манифест әр файлды өзінің бастапқы жолына қайтарады.
  8. JetBrains IDE (IntelliJ, PyCharm, WebStorm): автоматты тарихты ішінде сақтайды -/.cache/JetBrains/<IDE>/LocalHistory/.
  9. Гит (git reset --hard немесе git branch -D бірге .git/ бүтін): жүгіру git reflog немесе git fsck --lost-found ішінде салбырап тұрған дақтарды қалпына келтіру үшін дереу .git/objects/.

2-кезең: файлдық жүйені тек оқуға арналған мұздату (ro) бөлінбеген блоктарды қайта жазусыз

Кез келген ашық файл дескрипторларын шығарғаннан кейін /proc (немесе расталған жоқ), сіздің тікелей басымдылығыңыз операциялық жүйенің бөлімге бір қосымша сектор жазуын тоқтату болып табылады.

1. Linux: Деректер бөлімін түбірге қарсы қайта орнату (/) Бөлім тек оқуға арналған

  • А сценарийі: Жойылған файлдар бөлек бөлімде болды (/home, /var, /data, /mnt/storage):
  • Тек оқуға арналған таза қайта орнатуды дереу орындап көріңіз:
    sudo mount -o remount,ro /home
    
  • Егер 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 төтенше жағдайда тек оқуға арналған қайта орнату іске қосыңыз:
    echo 1 | sudo tee /proc/sys/kernel/sysrq
    echo s | sudo tee /proc/sysrq-trigger
    echo u | sudo tee /proc/sysrq-trigger
    
  • 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 жедел жадта және /dev/pts (devpts) виртуалды жедел жадының псевдотерминалды файлдық жүйесі болып табылады. 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-кезең: жасырын көшірме жазуды тексеру (CoW) кескіндемеге дейінгі суреттер мен көлеңкелі көшірмелер

Бөлінбеген секторлардың терабайттарын сканерлеуден бұрын амалдық жүйенің жасырын уақыт суретін автоматты түрде жасағанын тексеріңіз:

1. macOS: Жергілікті уақыт машинасының APFS суреттері (tmutil)

Сыртқы Time Machine дискісі бірнеше апта бойы ажыратылған болса да, macOS автоматты түрде сағаттық жергілікті APFS Copy-on-Write суреттерін ішкі SSD дискіге жазады (com.apple.TimeMachine.YYYY-MM-DD-HHMMSS.local) Time Machine конфигурацияланған сайын немесе macOS жаңартулары алдында: 1. Терминалдағы барлық жергілікті суреттерді тізімдеңіз:

tmutil listlocalsnapshots /
tmutil listlocalsnapshots /System/Volumes/Data
2. Кез келген сурет сіздің кездейсоқ алдын ала болса 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 / Сервер: көлемді көлеңке көшірмелері (VSS)

  1. Әкімші пәрмен жолын ашып, келесі әрекеттерді орындаңыз:
    vssadmin list shadows
    
  2. Егер көлеңкелі көшірме (\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1) сізден бұрын Shift+Delete, оны қалтаға байланыстырыңыз және файлдарды USB дискісіне көшіріңіз:
    mklink /d C:\ShadowRescue \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\
    

3. Linux: 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) бірінші:

sudo ddrescue -f -n /dev/nvme0n1p2 /mnt/external/victim_partition.img /mnt/external/ddrescue.log
Қатаң түрде жұмыс істеңіз /mnt/external/victim_partition.img сондықтан бастапқы диск ешқашан өзгертілмейді.

1. Қалпына келтіру ext4 / ext3 Linux жүйесінде (ext4magic және extundelete)

Қашан rm -rf файлдарды жояды ext4, ядро ​​негізгі инод кестесіндегі ауқым тармағының көрсеткіштерін нөлге келтіреді. Алайда, ext4ның jbd2 журнал (әдетте өлшемі 128 мегабайттан 1024 мегабайтқа дейін) жақында өзгертілген инод блоктарының тарихи көшірмелерін сақтайды. Сіз қайта орнатқаныңызша ro ауыр диск әрекеті журнал сақина буферін орап алғанға дейін, ext4magic журналдан алдын ала жою инодын шығарады және файлдарды түпнұсқалық файл атауларымен және каталог ағаштарымен қалпына келтіреді.

  1. ** Жүгіру ext4magic соңғы 2 сағат ішінде жойылған барлық файлдарды қалпына келтіру үшін (-a) салыстырмалы жолдың ішінде (-f)**: (Кіру нүктесінің алдыңғы қиғаш сызығын алып тастаңыз -f: үшін /home/kmyers/project тамырда / бөлу, өту -f home/kmyers/project; егер /home өз бөлімі болып табылады, өту -f kmyers/project.)
    mkdir -p /mnt/external/recovered_ext4
    sudo ext4magic /mnt/external/victim_partition.img \
      -a $(date -d "2 hours ago" +%s) \
      -f home/kmyers/project \
      -R -d /mnt/external/recovered_ext4
    
  2. Балама: жүгіру extundelete суретке қарсы:
    cd /mnt/external
    sudo extundelete /mnt/external/victim_partition.img --restore-directory home/kmyers/project
    

2. Windows жүйесінен қалпына келтіру NTFS кейін Shift+Delete (TestDisk және ntfsundelete)

Ұнайды ext4, Windows NTFS блок ауқымының көрсеткіштерін нөлге түсірмейді (Data Runs) негізгі файл кестесінің ішінде ($MFT) файл жойылған кезде жазу. Сіз басқан кезде Shift+Delete NTFS жүйесінде, 1024 байт $MFT жазба жай ғана тақырып жалауын аударады 0x01 (Қолдануда) үшін 0x00 (Жойылған). Оның $FILE_NAME атрибут және $DATA кластердің орындалу тізімі басқа файл оны қайта пайдаланбайынша 100 пайыз өзгеріссіз қалады $MFT ұяшық:

  1. ** Қолдану TestDisk жедел NTFS үшін $MFT толық қалта жолдарымен жоюды болдырмау**:
    sudo testdisk /mnt/external/victim_partition.img
    
    ** таңдаңыз[ Proceed ] -> [ EFI GPT ] -> [ Advanced ] -> NTFS бөлімін бөлектеңіз -> [ Undelete ]. Қалтаға өтіп, ** түймесін басыңыз.a жойылған файлдарды таңдау үшін ** түймесін басыңыз.C** (капитал C) оларды көшіру /mnt/external/recovered_ntfs/.
  2. ** Қолдану ntfsundelete (ntfs-3g)**:
    sudo ntfsundelete /mnt/external/victim_partition.img -t 2d
    sudo ntfsundelete /mnt/external/victim_partition.img -u -m "*" -d /mnt/external/recovered_ntfs
    

3. Қалпына келтіру XFS, APFS, немесе Raw Block Carving арқылы қайта жазылған журналдар (PhotoRec және grep -a -b)

Инод көрсеткіштері жойылғанда (мысалы, XFS, APFS немесе ext4 журналы оралған бөлім), файл тақырыптары/төменгі деректемелері немесе бірегей мәтін жолдары үшін бөлінбеген 4096 байт (4 килобайт) блоктарды сканерлеу арқылы деректерді қалпына келтіріңіз:

Нені жойдыңыз Үздік шикі ою құралы және дәл пәрмен Неліктен ол инодтарсыз жұмыс істейді?
Бастапқы код, конфигурациялар, Markdown, SQL демптері, SSH кілттері, 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 файлдары, кеңсе (DOCX/XLSX), ZIP/TAR мұрағаттары, кескіндер, бейнелер, SQLite ДҚ 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 Specific Inode & B-Tree Carving xfs_irecover немесе UFS Explorer Professional Recovery XFS бөлу топтарын сканерлейді (AGs) байланысы жоқ инод кластерлері және іргелес ауқым фрагменттері үшін.

Қалай пайдалануға болады grep -a -b + dd жойылған бастапқы кодты құтқару үшін немесе .env файлдар 2 минуттан аз уақыт ішінде

Бастапқы кодты жойсаңыз, .env құпиялар немесе көлемі 32 килобайттан төмен жазбалар: 1. Жойылған файлдың ішінен бірегей жолды іздеңіз және оның нақты байт ығысуын басып шығарыңыз (-b):

LC_ALL=C grep -a -b -o "def calculate_invoice_tax" /mnt/external/victim_partition.img
Айталық 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
3. Ашық /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, немесе 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, Linux ядросы дискідегі инод кестесіндегі ауқым ағашының көрсеткіштерін дереу нөлге теңеді, осылайша файлдық жүйе инодтың бөлінген экстенттері жоқ екенін біледі. сияқты құралдар ext4magic және жою ішінен сол инодтың ескі, жойылуға дейінгі көшірмесін табуға сеніңіз ext4 журнал (jbd2). Егер файл журнал арқылы жақында өтпей-ақ жасалған және жойылған болса немесе ауыр фондық жазбалар тек оқуға арналған қайта орнату алдында 128 МБ-тан 1 ГБ-қа дейінгі журнал сақинасының буферіне оралған болса, журнал көшірмесі жоғалады. Бұл жағдайда шикі блок қолтаңбасына ауысу керек (PhotoRec) немесе қарапайым мәтіндік байт іздеу (grep -a -b), ол inode метадеректерін қажет етпей, бөлінбеген деректер блоктарын тікелей сканерлейді.

SSD жасайды TRIM әрқашан бұзады rm -rf немесе Shift+Delete файлдар дереу?

Әрқашан емес, әсіресе Linux және сыртқы дискілерде. Windows 10/11 және ішкі NVMe SSD дискілері бар macOS жүйелерінде операциялық жүйе әдетте кірістірілген деректерді жібереді. ТЕКСІРУ / Бөлу тұрақты жойылғаннан кейін бірнеше секунд ішінде SSD контроллеріне пәрмен жіберіңіз, бұл SSD Flash Translation Layer (FTL) нөлдерді қайтару үшін (DZAT) сол блоктар үшін. Дегенмен, Linux дистрибутивтерінің көпшілігі (Ubuntu, Debian, Fedora, RHEL) жасайды емес үздіксіз орнату уақытын қосыңыз тастау әдепкі бойынша; орнына олар жүгіреді fstrim.timer аптасына бір рет. Сонымен қатар, көптеген USB-SATA және USB-to-NVMe сыртқы корпустары өтпейді ТЕКСІРУ USB массалық жады арқылы пәрмендер (BOT) және бағдарламалық қамтамасыз ету RAID / LVM / LUKS қабаттары жиі блоктайды тастау анық конфигурацияланбаса, әдепкі бойынша өту (`issue_discards = 1` немесе `allow-discards`).

Егер менің Linux бөлімі шифрланған болса ше? LUKS (dm-crypt) немесе менің Windows дискім пайдаланады BitLocker: Мен жойылған файлдарды әлі де қиып аламын ба?

Иә, егер сізде шифрлау құпия фразасы немесе қалпына келтіру кілті болса және контейнердің құлпын тек оқуға арналған режимде ашса. Ешқашан жүгірме фоторек, ext4magic, немесе сынақ дискісі шифрланған физикалық бөлімге қарсы (/dev/nvme0n1p2), себебі шифрланған шифрланған мәтін кездейсоқ шу сияқты көрінеді. Оның орнына Live USB құрылғысынан жүктеп, контейнер құлпын ашыңыз тек оқуға арналған режим (LUKS үшін: sudo cryptsetup ашық --тек оқу /dev/nvme0n1p2 crypt_rescue; Linux жүйесіндегі BitLocker үшін: дислокатор -r немесе WinPE жүйесінде тек оқуға арналған құлыпты ашыңыз) және шифры шешілген виртуалды карта құрылғысын суреттеңіз немесе сканерлеңіз (/dev/mapper/crypt_rescue).

Неліктен Windows жүйесінде қуат сымын тартып жатыр C:\ кездейсоқ жағдайдан кейін қауіпсіз Shift+Delete «Өшіру» түймесін басқаннан гөрі?

Сіз басқан кезде Бастау > Өшіру Windows жүйесінде операциялық жүйе өшіру алдында жүздеген мегабайт дискілерді жазуды орындайды: ол тізілім ұяшықтарын тазартады, өшіру оқиғаларын .evtx журналдар, USN журналын жаңартады ($UsnJrnl), тазартады немесе өлшемін өзгертеді pagefile.sys, және Fast Startup жүйелерінде көп гигабайттық күту күйі файлын жазады (hiberfil.sys) тікелей бөлінбеген NTFS кластерлері арқылы. Бұл өшіру жазбалары жиі нақты бөлінбегенді қайта жазады $MFT Сіз босатқан жазбалар мен деректер кластерлері Shift+Delete. Күшті лезде өшіру (қуат түймесін 10 секунд ұстап тұру немесе ашадан тарту) барлық жазуларды дереу тоқтатады; NTFS тек оқуға арналған Linux немесе WinPE құтқару 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= немесе ЖЕКЕ КІЛТІ АШУ), grep -a -b өңделмеген секторларды секундына бірнеше гигабайтпен сканерлейді және нақты қоршаған диск блоктарын басып шығарады.

Егер мен байқаусызда жүгіріп кетсем rm -rf / немесе жойылды /usr немесе /lib Linux жүйесінде және қазір тіпті емес ls, cp, немесе sudo жұмыс істейді, ашық терминалда пәрмендерді қалай іске қосамын?

Егер сіз сүртсеңіз /бин немесе /lib бар болған кезде bash немесе zsh Терминал әлі де жедел жадта ашық, сыртқы екілік файлдар сияқты /bin/ls немесе /bin/cp -мен сәтсіздікке ұшырайды Мұндай файл немесе каталог жоқ, бірақ қабықтың кірістірілген құрылғылары әлі де толығымен ЖЖҚ ішінде жұмыс істейді. Сіз пайдалана аласыз жаңғырық* орнына ls, printf "%s\n" "$( /dev/shm/rescued орнына cp, және echo u > /proc/sysrq-триггер SystemRescue Live USB құрылғысын өшіру және жүктеу алдында тек оқуға арналған ядроны қайта орнатуды іске қосу үшін (қабық әлдеқашан түбірлі болса).


Қатысты нұсқаулықтар


Дереккөздер және ресми нұсқаулар

  • Ұлттық стандарттар және технологиялар институты (NIST) (Америка Құрама Штаттары): Арнайы жарияланым 800-86: Криминалистикалық әдістерді инцидентке қарсы әрекетке біріктіру бойынша нұсқаулық және SP 800-88 Rev. 1: медианы зарарсыздандыру бойынша нұсқаулық (ATA TRIM / NVMe бөлу тәртібі).
  • Linux ядросының ұйымы (kernel.org): Ext4 файлдық жүйенің құжаттамасы (блок және инодты бөлу, jbd2 Журнал жүргізу және procfs /proc/<pid>/fd/ Файл дескрипторының семантикасы) және Linux Magic жүйесінің сұрау кілті (sysrq.txt).
  • CGSecurity (TestDisk & PhotoRec Ресми құжаттама) және ext4magic Жоғары ағынды анықтамалық нұсқаулық: * ext3/ext4 және NTFS томдарындағы инодты алу журналы және бөлінбеген ауқымды кесу*.
  • Киберқауіпсіздік және инфрақұрылымдық қауіпсіздік агенттігі (CISA) (Америка Құрама Штаттары): Оқиғаға жауап беру және соттық тұрақсыз/тұрақты емес дәлелдемелерді сақтаудың үздік тәжірибелері.
  • Еуропалық Одақ киберқауіпсіздік агенттігі (ENISA): Сандық криминалистика және сақтау медиасын сақтау үшін жақсы тәжірибе нұсқаулығы.