Fórum Root.cz

Ostatní => Odkladiště => Téma založeno: Pali 22. 02. 2011, 18:55:26

Název: Vrácení linku na vymazaný soubor
Přispěvatel: Pali 22. 02. 2011, 18:55:26
Nevi nekdo jak vratit link na vymazany soubor?

touch /tmp/a
less /tmp/a &
PID=$!
rm /tmp/a
ls -l -a /proc/$PID/fd/4
lr-x------ 1 pali pali 64 2011-02-22 18:50 /proc/$PID/fd/4 -> /tmp/a (deleted)


ln /proc/$PID/fd/4 /tmp/a
ln: creating hard link `/tmp/a' => `/proc/20502/fd/4': Invalid cross-device link
Název: Re: Vymazany soubor
Přispěvatel: branchman2 22. 02. 2011, 19:21:50
A co tak cp?
Název: Re: Vymazany soubor
Přispěvatel: Pali 22. 02. 2011, 20:48:16
cp ani cat link nevrati (soubor kopiruje)
Název: Re: Vrácení linku na vymazaný soubor
Přispěvatel: Radim Zátopek 22. 02. 2011, 21:09:24
Ta chybova hlaska vypada jako byste se poukousel o hardlink mezi ruznyma partisnama, coz nejde. Mate /proc i /tmp na stejnem diskovem oddilu?
Název: Re: Vrácení linku na vymazaný soubor
Přispěvatel: Pali 22. 02. 2011, 21:14:50
/proc je procfs
Název: Re: Vrácení linku na vymazaný soubor
Přispěvatel: JardaP . 23. 02. 2011, 00:02:09
No prave. Jestli se to v Linuxu nebere, z hlediska ln, jako by to byla jina partisna a tak to nejde hardlinkovat. /tmp je na jedne partisne, /proc je na zadne partisne, cili nejsou na stejne partisne a muzete se jit klouzat.
Název: Re: Vrácení linku na vymazaný soubor
Přispěvatel: alfi 23. 02. 2011, 09:58:17
linky v /proc/*/fd/* jsou vsechny jen symbolicke, tj. vytvorene pres "ln -s" :-)
viz taky man ln
Create hard links by default, symbolic links with --symbolic.  When creating hard  links,  each TARGET must exist.

přiznám se, že hard link jsem asi ještě nikdy nepoužil. vždy jen symbolické linky :-)
Název: Re: Vrácení linku na vymazaný soubor
Přispěvatel: Pali 23. 02. 2011, 13:09:08
Tak este raz.

Na linuxe ak otvorim nejaky subor (syscall open), dostanem na nho deskriptor. Ak potom bude chciet ten subor odstranit (stale kym je otvoreny; syscall unlink), tak na disku obsah suboru stale ostava, pokial ho nezavriem.

Zoznam otvorenych deskriptorov pre proces PID viem ziskat zobrazenim obsahu /proc/PID/fd

Ako dokazem vratit spat link na takto odstrany subor, ak je stale otvoreny (teda proces PID ma na nho deskriptor)?

Pre kopirovanie obsahu sa da pouzit ci uz dd alebo cat, avsak to subor kopiruje - ja chcem iba obnovit odstraneny link.
Název: Re: Vrácení linku na vymazaný soubor
Přispěvatel: Mordae 23. 02. 2011, 13:56:31
Zkus to, v C, nikoliv pres ln. Vidim to tak 50/50.
Název: Re: Vrácení linku na vymazaný soubor
Přispěvatel: Pali 23. 02. 2011, 18:09:30
a ako v C? syscall link robi to iste co ln.
Pouzil som v C link("/proc/...", "/tmp/a") a do errno mi uklada 11 (co je chyba ako pri ln)
Název: Re: Vrácení linku na vymazaný soubor
Přispěvatel: Sten 24. 02. 2011, 00:15:31
Nenašel jsem žádné systémové volání, které by to umožnilo, zato mě napadá spoustu bezpečnostních problémů, pokud by to šlo.