Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: usak 26 Listopadu 2012, 15:01:36

Název: Obnovení dat z koše do původního umístění
Přispěvatel: usak 26 Listopadu 2012, 15:01:36
Ahoj,
zakládám toto téma, jelikož původní je již zamčené.
Nic konkrétního, kromě onoho tématu se mi nepodařilo nalézt, viz.:
http://forum.ubuntu.cz/index.php?topic=14072.0 (http://forum.ubuntu.cz/index.php?topic=14072.0)

Potřeboval bych obnovit z koše velké množství souborů, které byly rozřazeny ve velkém množství složek a je téměř nemožné to udělat ručně :D
Bohužel se mi toto podařilo při importu náhledů do Shotwellu ...a nakonec jsem byl rád, že jsou "jen" v koši.

Ve zkratce: potřeboval bych vědět, jestli je nějaká možnost obnovit soubory do původního umístění, jelikož v koši soubory ve složkách nejsou, jsou tam samotné soubory. PS: Používám Ubuntu 12.04, ale předpokládám, že ta možnost nebyla a nebude defaultně nikde ;)

Děkuji za odpověď.
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: Tadeáš Pařík 26 Listopadu 2012, 15:11:51
Něco mi uniklo? Několik let žiju v tom, že stačí pravý klik na soubor a je tam něco jako obnovit do původního umístění? Nebo to tam fakt není? Nemůžu to teď zkusit...
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: Vojtěch Trefný 26 Listopadu 2012, 15:15:07
Něco mi uniklo? Několik let žiju v tom, že stačí pravý klik na soubor a je tam něco jako obnovit do původního umístění? Nebo to tam fakt není? Nemůžu to teď zkusit...

Je tam "obnovit", což obnoví do původního umístění a je to tam co pamatuju. (Ale třeba mám nějaké jiné Ubuntu, co já vím.)
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: compaq 26 Listopadu 2012, 15:19:15
Cesta se nedá zobrazit.
Stejně jako cesta ve výsledcích vyhledávání.

Je to škoda. Někdy se to hodí vidět co a kam vracím z koše.
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: Tadeáš Pařík 26 Listopadu 2012, 15:20:26
Cesta se nedá zobrazit.
Stejně jako cesta ve výsledcích vyhledávání.

To nebylo to na co se ptal tazatel, ten chtěl soubory obnovit do původního umístění, což lze.
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: usak 27 Listopadu 2012, 10:49:39
Jelikož už adresáře, kde se soubory nacházely, neexistují, nemůžu obnovit do původního umístění přes right click :/
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: GdH 27 Listopadu 2012, 11:37:12
Umístění smazaných souborů:
~/.local/share/Trash/files/

Informace o původním umístění a čase smazání pro každý soubor zvlášť:
~/.local/share/Trash/info/

Stačí jen napsat skript, který s tím naloží podle tvých představ.
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: usak 27 Listopadu 2012, 20:12:07
GDH: Super! A dobrý muži, nasměroval bys mě, co si vygůglit pro moje potřeby? V linuxu znám minumum příkazů, natož abych si sepsal script, co by ještě nedejbože udělal, co bych chtěl...To jsem rád, že umím trochu v Oknech :D
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: GdH 28 Listopadu 2012, 00:14:56
Tak v Pythonu 3 by to mohlo vypadat následovně:

Kód: [Vybrat]
#!/usr/bin/python3

import os, shutil, urllib.parse

path_f = os.path.expanduser('~/.local/share/Trash/files/')
path_i = os.path.expanduser('~/.local/share/Trash/info/')

lst = []
files = os.listdir(path_f)
for file in files:
    if os.path.isdir(path_f + file): continue
    with open(path_i + file + '.trashinfo', 'r') as f:
        lines = f.readlines()
        dest = urllib.parse.unquote(lines[1].replace('Path=', ''))[:-1]
    lst.append([file, dest])
    print('\n', file,'\n-> ', dest)
i = input('\nZkopírovat tyto soubory? (a/n)  ')
if i.lower() == 'a':
    for i in lst:
        try:
            os.makedirs(os.path.dirname(i[1]))
        except OSError: pass
        shutil.copy2(path_f + i[0], i[1])
    print('\nSoubory byly zkopírovány.\n')
else:
    print('\nObnova souborů zrušena\n')

Kopíruje to jen soubory, adresáře vynechává, nejprve je všechny vypíše spolu s cílovými cestami a po kladné odpovědi teprve zkopíruje, v koši tedy původní soubory zůstanou.

Spouští se pomocí
Kód: [Vybrat]
python3 soubor_do_kterého_jsi_to_uložilpokud nejsi ve stejném adresáři tak samozřejmě s relativní, nebo absolutní cestou.

Ještě jsem zapoměl, že Python 3 bude možná třeba doinstalovat..

Kód: [Vybrat]
sudo apt-get install python3by snad mělo stačit :)

Ještě jedna poznámka: V žádném případě kód necpat do souboru s názvem 'copy.py', došlo by při běhu k záměně modulu v modulu shutil. Nechtěnému importu sebe sama se dá nejjednodušeji zabránit nepoužitím koncovky '.py' v názvu souboru.
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: usak 29 Listopadu 2012, 18:41:57
Díky moc, funguje - soubory se uložily ve složkách, jak měly, do umístění, kde jsem si vytvořil scrip kopirovani.py (copy.py byl nekorektní název, jak mi později GdH osvětlil).

(http://www.diederickdevries.net/images/excellent.jpg)
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: GdH 29 Listopadu 2012, 18:57:01
Tak fajn. Jinak jen poznámka, že ten skript nemusí být ve složce, kam se kopíruje, jak by mohlo vyznít z předchozího příspěvku.
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: aloisam 29 Listopadu 2012, 20:26:21
jestli to chápu dobře, tak tenhle skript je určen pro situace, kdy si přesunu soubory do koše, a pak složky ve kterých byly shift+deluju, a následně ty soubory chci zas obnovit do původního umístění.. Sice si nepamatuju, že by se mi něco podobnýho přihodilo, ale radši si to někde uložím. :)
Název: Re:Obnovení dat z koše do původního umístění
Přispěvatel: GdH 29 Listopadu 2012, 21:24:00
jestli to chápu dobře, tak tenhle skript je určen pro situace, kdy si přesunu soubory do koše, a pak složky ve kterých byly shift+deluju, a následně ty soubory chci zas obnovit do původního umístění.. Sice si nepamatuju, že by se mi něco podobnýho přihodilo, ale radši si to někde uložím. :)

Chápeš to správně :) Faktem je, že tohle je výjimečná situace, kdy dojde k vyhození souborů jednotlivě ze složitější adresářové struktury, aby to nešlo napravit ručně. Přidat podporu adresářů a vyrobit z toho extension pro Nautila by bylo jednoduché, ovšem pravděpodovně zbytečné. Zajímavější by bylo, kdyby to uměl Nautilus sám a po dotazu se pokusil původní adresářovou strukturu obnovit.