Puncte:3

Ce se întâmplă dacă facem rm -rf ../**? Putem restaura datele?

drapel us
xxz

am facut ceva de genul:

$ cd /A/B/
$ rm -rf ./*
$ rm -rf ../**

Din cauza problemelor de rețea, sistemul meu s-a deconectat de la Ubuntu. Când m-am întors, nu erau fișiere sau foldere în /A pliant.

user535733 avatar
drapel cn
Folosirea `rm` pentru a experimenta cu locațiile `.` și `..` pare o modalitate prostească de a investiga care sunt acele locații și cum să le folosești. Există multe modalități mai bune, nedistructive de a învăța despre ele.
drapel jp
Al doilea `*` din `../**` este redundant. `*` înseamnă toate fișierele și folderele care se potrivesc cu orice model. de exemplu. `a*b` ar fi orice care începe cu a și se termină cu b. Când spui `**`, spui „potriviți 0 sau mai multe din orice caracter și potriviți 0 sau mai multe din orice caracter”. În timp ce `**` se potrivește cu toate subdirectoarele, asta a fost deja gestionat de `rm -r`.
code_dredd avatar
drapel cn
În lipsa utilizării software-ului de criminalistică digitală pentru recuperarea datelor, nu, nu puteți face nimic pentru a restaura datele afectate. Acest lucru este similar cu apăsarea Shift + Del în Windows - nu există coș de reciclare la care să mergeți. În general, este benefic să verificați documentația comenzii înainte de a încerca experimente în care datele dvs. sunt în joc. **TL;DR:** Ai greșit :(
marcelm avatar
drapel cn
Titlul întrebării întreabă despre `./*`, dar `../**` este cel care a cauzat probleme cu OP. Titlul întrebării ar trebui editat pentru a reflecta mai bine acest lucru. (Aș edita, dar postarea a fost blocată într-o editare în așteptare de ceva vreme)
drapel ng
Se pare că îmi amintesc avertismentele explicite din primele cărți Unix despre a nu face lucruri de genul acesta, în special nu `sudo rm -rf /*`. „Totul vechi este din nou nou”
drapel us
@AdamOutler Analiza dvs. a globului `**` nu este valabilă cu majoritatea shell-urilor moderne. Aruncă o privire [aici](https://stackoverflow.com/questions/28176590/what-do-double-asterisk-wildcards-mean).
drapel jp
@doneal24 dacă `rm -rf ../*` sau `rm -rf ../**` va șterge toate fișierele și folderele din directorul de deasupra directorului curent. Nu sunt sigur despre ce vorbești.
drapel us
@AdamOutler Globurile `./*` și './**` sunt extinse diferit. `**` nu înseamnă ceea ce crezi că înseamnă. Efectul practic în exemplul `rm -rf` este nul, dar explicația dvs. nu este corectă.
Puncte:22
drapel ng

rm îndepărtează fișiere. Nu le pune în Coșul de gunoi, așa că nu pot fi restaurate prin metode normale.

De asemenea -rf eticheta face două lucruri:

The -r tag înseamnă recursiv ceea ce înseamnă că șterge calea sau fișierul pe care îl specificați ȘI totul dedesubt.

The -f tag înseamnă forta, ceea ce înseamnă că operațiunea se va finaliza fără alte solicitări.

Pentru a răspunde la întrebarea dvs. despre sintaxă, rețineți că ./ este calea directorului curent și ../ este calea directorului „părinte” (calea de deasupra directorului curent).

Deci dacă fugi rm -rf ../* în timp ce sub /A/B/, atunci ștergeți totul de sub /A/.

Dacă ai de gând să folosești rm -rf, fiți conștienți de faptul că aceasta este o comandă foarte puternică care va șterge fără discernământ și definitiv Tot în calea pe care o specificați.

Singura ta opțiune de a recupera fișiere din această operațiune sunt instrumentele avansate de recuperare a datelor, cum ar fi photorec/testdisk. Aceste aplicații nu au întotdeauna succes în restaurarea datelor și orice utilizare ulterioară a dispozitivului dvs. scade probabilitatea ca acestea să recupereze ceva.

Cea mai bună cale este restaurarea din copii de rezervă.

xxz avatar
drapel us
xxz
mulțumesc, ideea mea este că am făcut rm în locația B. dar cum s-au dus fișierele în locația A. nu am inteles. vedeți întrebarea mea pentru aceeași
Nmath avatar
drapel ng
Editat pentru a include mai multe detalii despre sintaxa căii. Consultați: https://superuser.com/a/54030
drapel cn
Odată am vrut să tastau `rm var -rf`, dar am tastat accidental `rm /var -rf`, așa că am șters un director mare de sistem în loc de un subdirector al unui site web. Această comandă poate fi foarte distructivă cu cea mai mică greșeală. De asemenea, dacă nu aș fi fost root comanda ar fi eșuat, așa că mai este o lecție. Din fericire, era doar un VM.
drapel us
@xxz Aveai `/A/B` ca director de lucru, dar i-ai spus lui rm să ștergă `../**`, de exemplu, fișierele și directoarele cu un nivel mai sus.
Akbarkhon Variskhanov avatar
drapel mx
@Rodney este exact ceea ce este întotdeauna o idee bună să rulați mai întâi ceva de genul `ls -1` pe argumente.
Puncte:10
drapel vn

Când alergi rm -rf ../** în director /A/B, se întoarce la director /A și elimină tot ce este acolo, din moment ce .. este directorul părinte.

Dacă doriți să puteți „restaura” datele, ar trebui să luați în considerare rularea unui sistem de fișiere cu instantanee active activate.

Ambii ZFS și BTRFS au implementate instantanee și pot fi configurate instantanee automate.

Dacă, de exemplu, ați configurat instantanee orare pentru ultimele 24 de ore și instantanee zilnice pentru ultimele 14 zile, puteți reveni oricând la oricare dintre acele instantanee pentru un anumit sistem de fișiere.

Configurația exactă a instantaneelor ​​automate va varia în funcție de sistemul de fișiere ales.

Motivul pentru care acest lucru „funcționează” este că ambele sisteme de fișiere implementează „copy-on-write”, în care fiecare modificare a sistemului de fișiere este scrisă într-o nouă locație - astfel încât nicio dată nu este eliminată până când instantaneele și pointerii către datele vechi expiră.

Puncte:0
drapel cn

Ceea ce ai făcut de fapt este că (../**).

după cum puteți vedea, puneți punctul dublu în comanda dată, care șterge tot ceea ce vine înainte de DIR-ul dvs. de lucru.

Acum să vedem cum funcționează. Imaginează-ți că avem un director de locații cu numele XYZ,

# pwd
/
# mkdir XYZ

# cd XYZ

# pwd
/XYZ

Conform comenzii de mai sus, am creat un director. care poate fi considerat ca -> /A/B

acum, când rulați comanda menționată mai jos, va șterge doar totul din directorul de lucru care este /XYZ

rm -rf ./**

Dar când rulați aceeași comandă cu o pictogramă cu două puncte, comanda în sine își va schimba locația directorului care rulează și va șterge tot ceea ce este înainte de /XYZ numai de acolo, dar din moment ce utilizatorul lucrează într-un folder care există în acel director care primește ștergeți în acel moment, doar acel folder va rămâne neșters și totul va fi șters.

Este destul de greu de spus dacă vă puteți recupera sau nu datele, dar puteți utiliza photorec, care vă ajută să vă recuperați datele, dar va schimba numele fișierelor de recuperare la întâmplare, așa că dacă știți ce a fost acolo, altfel nu cred. vă puteți recupera datele.

sper ca asta sa raspunda la intrebarea ta.

Puncte:0
drapel in

Ștergeți recursiv fișiere și foldere dintr-un folder. Într-un caz folderul părinte.

Ne-ar ajuta puțin dacă ne-ați spune unde vă aflați, dar dacă acest lucru este sensibil, atunci probabil că sunteți undeva sub /home sau /opt sau /var, deoarece alte locuri au nume standard de care nu ar trebui să vă fie frică să le distribuiți.

Puteți restaura fișierele dintr-o sursă externă, dar dacă ați șters folderele bin pot apărea probleme cu stabilitatea sistemului.

Puteți monta discul pe o altă mașină pentru restaurare în acest caz.

M-aș aștepta să aveți copii de rezervă ale copacilor majori. În cloud (și chiar local) puteți reveni la o imagine recentă a discului și puteți doar să restaurați /home, /var și orice ați făcut copii de rezervă ca fiind relativ volatil.

NB. - restaurarea arborelui cu cp sau rsync poate fi o defragmentare de facto.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.