Podpora :: RAR Support

2018-12-01 11:55:23
Tom
Nelze sbalit / rozbalit soubory

Dobrý den,

při používání RARu na linuxu jsem narazil na problém. Nedaří se mi RAR přinutit, aby správně sbalil některé soubory / složky.
Používám primárně Thunar + file-roller + doplnění přepínačů do .rarrc (switches_a=-oi -s -k -df). Používám aktuální verzi 5.6.1 staženou z https://rarlab.com/.

Vzorový soubor: https://uloz.to/!5ETJilqgWVHz/newaita-rar
Takhle to má být: https://uloz.to/!6DI8mrpGH64y/newaita-7z

File-roller generuje soubor obsahující seznam souborů pro sbalení a používá přepínč -@ : https://uloz.to/!0vowyzq5iPHv/file-list-rar
Zkoušel jsem i samotný příkazový řádek, ale výsledek je prakticky stejný.

Tohle je výstup při rozbalování: https://uloz.to/!nd9amkhUTp2E/vystup-txt-rar

Je možnost to nějak vyřešit?

Předem děkuji za odpověď

2018-12-03 20:18:46
Ľubomír Mlích
Re: Nelze sbalit / rozbalit soubory

Dobrý den,

díky za hlášení problémy, bohužel se mi nedaří ho reprodukovat. Soubor stažený z ulož to je vadný a nedá se mi otevřít. Když spustím:

rar/rar a -oi -s -k -df test.rar Newaita >test.log

tak se RAR 5.61 soubory zabalí v pořádku a nepíše mi chyby. Jenom jsem změnil práva souborů tak, aby do nich mohl linuxový uživatel zapisovat a smazat je (z 400 na 700). Rozbalit  výsledný archiv mi to jde také bez problémů. Zkoušel jsem to na Ubuntu 16.04.

Opomenul jsem nějaký parametr?

Díky.

2018-12-03 21:07:16
Tom
Re: Nelze sbalit / rozbalit soubory

Používám Ubuntu 18.04 a zkusil jsem i RAR 5.50 z repozitáře a výsledek stejný.
RAR se při balení tváří, že vše sbalil dobře. I test "rar t Newaita.rar" proběhne v pořádku. Archiv není poškozen.
Pokud jej rozbalím "rar x Newaita.rar", tak struktura souborů není, jak byla před sbalením. Nedokáže znovu vytvořit odkazy a tím to rozbijí.

Pokud použiju příkaz "rar a -oi -s -k -df Newaita.rar Newaita", tak se to uloží "dobře" až na to, že zruší všechny odkazy a při rozbalování není schopen tyto odkazy znovu vytvořit.
Pokud použiju pohodlnější způsob (grafický) - Thunar + File-roller + .rarrc , File-roller vygeneruje soubor "file-list" a zavolá RAR s přepínačem -@ a odkazem na "file-list" ( "rar a -oi -s -k -df Newaita.rar @file-list" ). RAR následně nedokáže rozeznat rozdíl mezi odkazem a souborem a místo 35000 souborů to hlásí 109000 souborů.

V tomhle stavu je možné RAR použít, pouze pokud neosahuje odkazy na jiné soubory / složky. Je to pro mě škoda, protože RAR je jediný z dostupných formátů, který dokáže chránit archiv proti poškození. Proto jsem jej začal používat.

2018-12-04 17:18:22
Jozef Mlich
Re: Nelze sbalit / rozbalit soubory

Pro praci se symlinky (symbolickymi odkazy) je potreba pridat prepinac -OL. Podle popisu si nejsem jisty v cem presne problem. Budu to muset jeste prozkoumat na prilozenych souborech..

2018-12-04 18:35:29
Tom
Re: Nelze sbalit / rozbalit soubory

Pravděpodobně jsem problém nalezl. Při použití přepínače -@ je přepínač -ol ignorován.
Při použití přepínače -@ se vlastně soubory sbalí 2x. Při rozbalování pak nastává problém, když existuje složka (např. categories), která byla vytvořena před tím, jak se RAR pokouší vytvořit odkaz s názvem categories.

Výsledný archiv s -@ má velikost 11 867 327 B.
Při použítí "rar a -oi -s -k -ol Newaita.rar Newaita" je velikost 9 914 305 B, stejně jako bez přepínače -ol.

Takže RAR nemá správně ošetřen přepínač -@ , kde neprovádí kontrolu, zda jde o soubor, složku nebo odkaz a slepě vše sbalí, co obsahuje seznam souborů.

2018-12-08 10:16:05
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Omlouvám se za pozdní odpověď. Je mi líto, ale problém se mi stále nedaří vyvolat. Dělám toto:

mkdir tmp
cd tmp
echo "test" > test.txt
ln -s test.txt symlink.txt
cd ..
rar a -oi -s -k -df brokenarchive.rar tmp
rar x brokenarchive.rar
cat tmp/symlink.txt

a výstup je obsah souboru, zdá se, že link není rozbitý, přestože používám uvedené parametry. Je ještě něco, co dělám špatně?

2018-12-08 10:51:28
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Chtěl jsem to ještě zkusit ze souborem z uloz.to, ale vrací se: Soubor je označen jako soukromý

2018-12-08 11:59:18
Tom
Re: Nelze sbalit / rozbalit soubory

Soubory na uloz.to jsou znovu dostupné. Myslel jsem, že už nebudou potřeba.
Jak jsem psal výše, problém nastane jenom při použití přepínače -@ a se seznamem souborů. Pokud to sbalím přes commandline bez -@ , tak je to v pořádku. Linky se ukládají v obou případech, ale při -@ je tam navíc vytvoření obyčejné složky / souboru a pak následně pokus o vytvoření linku, který selže, protože to už existuje.

Pro zjištění pořadí souborů v archivu jsem použil "rar v arcive.rar > vypis.txt"

2018-12-08 13:04:04
Tom
Re: Nelze sbalit / rozbalit soubory

Zde je video: https://uloz.to/!dA89Po7Yvxjl/vokoscreen-2018-12-08-12-16-45-mp4

2018-12-08 17:17:24
Tom
Re: Nelze sbalit / rozbalit soubory

Ještě jsem zkusil jeden pokus.
Na adrese https://uloz.to/!wrChklzGMAAQ/newaita-file-list-rar je archiv, ve kterém se nachází:
- file-list - soubor se seznamem souborů (vygenerováno)
- Newaita.7z - původní soubor
- Newaita-filelist.rar - archiv vytvořený příkazem ze souboru "Příkaz.txt"
- Příkaz.txt
- vystup.txt - celý výstup průběhu přidávání souborů do archivu

2018-12-08 21:08:29
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Díky moc. Chybu vidím a předám do centrály, aby se na to mrkli. Jakmile budu mít odpověď, dám vědět.

Ještě jednou díky.

2018-12-19 20:40:45
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Dobrý den,

omlouvám se za pozdní odpověď, problém je požadavek filelistu uložit soubory schované za symbolickým linkem. Tyto soubory pak jdou do archivu dvakrát. Kompletní překlad odpovědi od Eugena Roshala, spožení je moje chyba.

Takto zadané instrukce  jsou konfliktní.

Přepínač -ol říká, že RAR mám uložit symbolické linky jako linky. Pokud je symbolický link soubor, jeho obsah není uložen do archivu. Pokud je symbolický link složka, souboru uložené v této složce nejsou uložené do archivu.

Newaita.7z obsahuje symbolický link 'categories' jehož cílem je složka 'apps' uložená ve stejném archivu. Takže pokud použijeme přepínač -ol RAR nesmí uložit obsah 'categories' a musí uložit pouze symlink 'categories' ukazující na 'apps'.

Ale seznam souborů obsahuje jak Newaita/categories and mnoho dalších položek souborů a složek uvnitř Newaita/categories, například 

Newaita/categories/64@2x/config-language.svg.

Takže -ol říká RARu, aby uložil Newaita/categories jako symbolický link and přeskočil jeho obsah, ale seznam souborů trvá na tom, že obsah této složky je také třeba uložit. Ve výsledku RAR uloží obsah tohoto symlinku jako by to byla obyčejná složka a pak uloží samotný symbolický link jako symbolický link. RAR ukládá všechny složky a linky na konec archivu, takže když začne vytvářet linky nebo nastavovat atributy složek, jejich cíle jsou už rozbalené. Výsledný archiv tedy obsahuje nejdříve položky ve složce Newaita/categories následované záznamem samotného symbolického linku pro Newaita/categories.

Když dojde k rozbalení takového archivu, RAR nejdříve zaznamená položku ve složce Newaita/categories, například Newaita/categories/16@2x, rozbalí ji a vytvoří složku Newaita/categories, aby měl kam uložit rozbalený soubor. Když jsou všechny soubory rozbalené, začně RAR pracovat se symbolický odkazy, ale RAR je nemůže vytvořit, protože složka s tímto jménem už byla dříve vytvořena. Takže se na obrazovce objeví dotaz, zda chcete soubor přepsat.

Problému je možné se vyhnout tak, že buď odstraníte přepínač -ol nebo smažete jména souborů ve složkách symbolických linků. To jsou ty dvě konfliktní instrukce. I když si nebudete všímat dotazu, zda se soubory mají přepsat, vede to k množštví duplicitních záznamů v archivu, protože symbolický link 'categories' prostě vede do složky 'apps' a všechny položky ve složce 'categories' jsou již jednou archivovány ve složce 'apps'.

Řekl bych, že nejjednodušší by bylo spustit vytvoření archivu příkazem:

rar a -oi -s -k -ol Newaita-filelist.rar Newaita

a nahradit seznam souborů jediným jménem adresáře, který se má archivovat. Takový požadavek zvládne RAR zpracovat správně a uloží linky jako linky a složky jako složky.

2018-12-19 22:58:49
Tom
Re: Nelze sbalit / rozbalit soubory

Takže je to vlastně konflikt mezi 2 SW.
Bohužel tento způsob byl rychlejší, jak vypisování příkazů do commandline. Archivuji velké množství souborů a potřebuju to udělat co nejrychleji.
Taky jsem i trochu více zkoušel a porovnával chování s jiným formátem.
Zkusil jsem zjistit jaký příkaz dostává 7z při použití file-rolleru a je to jako u RARu - identický filelist a ten si s tím poradí bez problému, protože si před kompresí provede scan všech souborů a vyhodnotí je. Zde jsou screeny s příkazama, které se používají: https://uloz.to/!iox0hsp17ONZ/prikazy-rar
Takže si spíš myslím, že je to problém na straně RARu, který by neměl slepě následovat vše, co je napsáno v tom filelistu. Tento filelist používá na linuxu mnoho jiných formátů a právě RAR má s tím jediný problém.
Takže pokud to zůstane v tomhle stavu, je RAR nepoužitelný.

2018-12-20 20:16:18
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Díky za zpětnou vazbu, ceníme si jí. Předáme ji dál a zeptáme se, zda plánují změnu.

Nicméně myslím si, že Eugenem navrhované řešení, tedy do filelistu dát pouze název složky, která se má archivovat, je rychlé a efektivní.

Má i své omezení, protože nebude fungovat, když budu chtít archivovat pouze některé soubory z dané složky.

2018-12-20 20:28:17
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Předpokládám, že do filelistu jdou jen určité soubory, ne všechny soubory v dané složce, je to tak?

2018-12-20 22:56:45
Tom
Re: Nelze sbalit / rozbalit soubory

Bohužel generování filelistu neovlivním. Je to prováděno SW třetí strany, který pak volá RAR. Pravděpodobně je tam vypsáno vše, co najde. (Příkaz je: file-roller --add /adresa/na/složku)
Příkaz je vidět na screenu, na který je odkaz v mém předchozím příspěvku.
Co se týče toho omezení, v mém případě je nepodstatné, protože archivuji vždy všechny soubory v dané složce.

Bylo by možná vhodné přidat nový přepínač, např. -dd (disable duplicates), který by tohle ošetřil.

2018-12-21 10:00:20
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Jestli tomu rozumím správně tak kombinace @ a -ol je výchozí nastavení vaší distribuce, při kombinaci file-roller a rar. Cílem je, aby jste mohl snadno a rychle archivovat soubor z gui.

Jedna možnost je opravit RAR, aby uměl to co chcete a druhá možnost je nastavit vaši distribuci, aby uměla pracovat s RARem :-)

Zkusil jsem si nainstalovat Thunar a v default nastavení se mi archiv zabalil bez problémů a poté i rozbalil. Linky tam jsou tak jak mají být. Můžete zkusit vymazat nebo přejmenovat váš soubor .rarrc jestli to nepomůže.

2018-12-21 10:03:24
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

hmmm, funguje mi to i s vaším .rarrc

2018-12-21 10:18:26
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Ještě by šlo udělat v Thunaru:

Upravit -> Konfigurovat vlastní akce -> +

Název: zaRARovat

Příkaz: rar a -ol -s -k -df %F

V záložce podmínky zobrazení zaškrtnout všechny checkboxy.

A pak se vám v Thunaru po kliknutí pravým tlačítkem myši zobrazí kontextová nabídka zaRARovat a bude to dělat přesně to, co zadáte do příkazu.

Mohlo by být?

2018-12-21 11:07:43
Tom
Re: Nelze sbalit / rozbalit soubory

Nápad vcelku dobrý, ale u mně nefunkční - nic se nestane.
Trochu jsem to vylepšil.
Můj příkaz: exo-open --working-directory %f --launch TerminalEmulator rar a -ep1 -oi -s -k -ol -rr5p -v500m -df -p -- %d/%n.rar %F
Otevře terminál a spustí příkaz. Zobrazí dotaz na heslo a výstup je možné sledovat.
Nevýhoda je, že při vybrání více souborů / složek ve aktuální složce, nese název archivu název první vybrané položky. Ale je to použitelné.

2018-12-21 12:54:48
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Dobře.

Dám vědět až odpoví, jestli se to bude spravovat.

2018-12-21 20:31:57
Lubo Mlich
Re: Nelze sbalit / rozbalit soubory

Eugene Roshal říkal, že se mu nepodařilo 7zipem dosáhnout spolehlivé řešení tohoto problému - použil parametry -snl a filelist @ na složku obsahující symlink na jinou složku (se soubory) v též složce.

složka

     symlink na složka2

     složka2

         soubor1

         soubor2

A říkal, že se mu nepodařilo zjistit, na čem je chování přesně závislé, někdy byly symlink úspěn obnoven, jindy tam byl jako samostatný adresář.

Dále říkal, že o toto si zatím nikdo neřekl, protože když někdo používá -ol, tak nepřidávají do seznamu souborů symlinky.

Zvažuje, že by do další verze RARu zařadil kontrolu, která by tento problém ošetřila.

2018-12-21 23:15:29
Tom
Re: Nelze sbalit / rozbalit soubory

V mém případě se povedlo linky obnovit pokaždé jak u 7z tak u RARu.
Zde jsou mé testovací soubory: https://uloz.to/!OnRm2x7JKUBx/test-rar

Mně je prakticky jedno, jestli obnoví linky nebo ne. Potřebuju, aby to bylo funkční po rozbalení.
Dávněji jsem našel archiv, kde RAR rozbil celou adresářovou strukturu. Ten jsem smazal, protože byl už nepoužitelný.
Nevím, kolik uživatelů používá RAR na linuxu, ale v porovnání s uživateli na Windows to bude malý zlomek.
Já si jenom našel uživatelsky přívětivější způsob jeho použití, jak stovky archivů vypisovat do commandline.

2019-01-10 12:12:06
Tom
Re: Nelze sbalit / rozbalit soubory

Tak jsem to našel. Zde https://uloz.to/!XaRR1XmMqmjb/pit-rar je soubor se vzorkama.
Soubor papirus-icon-theme-20190106-fl.rar je vytvořen pomocí přibaleného file-list. V tomhle případě i rozbalení proběhne bez chyby, ale rozbijí strukturu zložek.
Soubor papirus-icon-theme-20190106.rar byl vytvořen bez file-list a je i struktura v pořádku.