abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 20:55 | IT novinky

    IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.

    Ladislav Hagara | Komentářů: 0
    včera 10:44 | Zajímavý článek

    Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.

    Ladislav Hagara | Komentářů: 20
    včera 01:00 | Nová verze

    Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    včera 00:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    5.6. 16:44 | IT novinky

    Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.

    Ladislav Hagara | Komentářů: 10
    5.6. 10:44 | Nová verze

    MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.

    Ladislav Hagara | Komentářů: 0
    5.6. 10:22 | Nová verze

    Canonical vydal Ubuntu Core 24. Představení na YouTube. Nová verze Ubuntu Core vychází z Ubuntu 24.04 LTS a podporována bude 12 let. Ubuntu Core je určeno pro IoT (internet věcí) a vestavěné systémy.

    Ladislav Hagara | Komentářů: 2
    5.6. 01:00 | Nová verze Ladislav Hagara | Komentářů: 0
    4.6. 19:55 | IT novinky

    Intel na veletrhu Computex 2024 představil (YouTube) mimo jiné procesory Lunar Lake a Xeon 6.

    Ladislav Hagara | Komentářů: 0
    4.6. 13:44 | IT novinky

    Na blogu Raspberry Pi byl představen Raspberry Pi AI Kit určený vlastníkům Raspberry Pi 5, kteří na něm chtějí experimentovat se světem neuronových sítí, umělé inteligence a strojového učení. Jedná se o spolupráci se společností Hailo. Cena AI Kitu je 70 dolarů.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Dotaz: tar a čtení z listu

    18.4. 01:10 jejda | skóre: 24 | blog: jejda
    tar a čtení z listu
    Přečteno: 590×
    Ahojte! Mám seznam souborů ve kterém je několik set položek ve formátu:
    /home/user1/dir/dir/dir/dir/file
    /home/user2/dir/dir/file
    /home/user3/dir/dir/dir/dir/dir/file
    /etc/dir/dir/file
    /mnt/disk/dir/dir/dir/file
    .....
    .....
    
    Chtěl bych ty soubory zazálohovat, ale netuším jak přinutit tar aby zachoval práva a vlastníka adresářů. Spouštím to jako
    tar -czvf archiv.tgz -T filelist.txt
    U souborů v archivu jsou ty práva v pořádku, ale u adresářů tar nastaví jako vlastníka root:root a práva 0755. Prostě mi jde o to, jak z relativně rozsáhlého filesystému vyzobat soubory a ty zazálohovat i s cestou včetně práv nadřazených adresářů. Poradíte něco?

    Odpovědi

    18.4. 05:09 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Teda provizorně jsem to zatím vyřešil takto:
    archive="/home/zaloha/$(cat /etc/hostname)_$(date '+%Y-%m-%d').tar.gz"
    dir=$(mktemp -d)
    rsync -a --files-from=/home/zaloha/files.txt / $dir
    cd $dir
    tar -czvf $archive .
    chmod 600 $archive
    cd ..
    rm -r $dir
    Ale přijde mi to jako docela prasečina ty soubory někam dočasně kopírovat aby se zachovaly práva adresářů i po rozbalení. Nevíte o nějakém čistějším řešení? Možná nějak cpio a rourou přímo do taru? ...zkusím ješte poexperimentovat.
    18.4. 06:57 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Teda má to jeden zajímavý bug. Když ten archiv někam rozbalím, tak to změní práva adresáře do kterého se to rozbaluje na 0700. :-(
    21.4. 09:30 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Aha tak ono to není bug ale takova "security" fičura toho mktemp. Bezpečnější je to rozbalovat jako
    tar --one-top-level -xzf $archive
    Vyvoří to podadresář.
    18.4. 08:15 rastos | skóre: 62 | blog: rastos
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Existuje nástroj, ktorý je na toto ušitý: cpio. Akurát, že formát nie je "tar" ale "cpio". Zabaliť:
    cpio -ov < filelist.txt > archiv.cpio
    Rozbaliť:
    cpio -idv < archiv.cpio 
    'o' je 'output to archive'
    'v' je 'verbose' - aby písal mená súborov, ktoré spracováva
    'i' je 'input from archive'
    'd' je 'create directories as needed'

    Ak cesty k súborom obsahujú medzeru/tab/... tak jednotlivé mená súborov by mali byť oddelené nulovym bajtom a nie EOL a cpio potom treba pridať flag '0'

    Skombinovať sa to dá pekne s find ... -print resp. find ... -print0.

    18.4. 08:17 rastos | skóre: 62 | blog: rastos
    Rozbalit Rozbalit vše Re: tar a čtení z listu

    A prípadne sa dá pri rozbaľovaní pridať ešte

    'm' - zachovať file modification time
    18.4. 10:37 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Ono se cpio v tomto chová uplně stejně jak tar. Ty adresáře které v tom archivu fyzicky vůbec nejsou to vytváří až během rozbalování s právama toho kdo ten archiv rozbaluje. Jediné na co jsem zatím přišel je, ty soubory přechodně vykopírovat včetně cest někam ven a tam je teprv zabalit. Ale přijde mi to takové těžkopádné. Jsem tak trochu doufal, že by mohl existovat nějaký elegantnější způsob.
    21.4. 01:43 Jarda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    rastos: je to skvělé, jenom jestli by šla nějak zakomponovat komprimace do příkazů něco jako "cpio.gz"?
    21.4. 09:16 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Zakomprimovat to jde jednoduše rourou přes gzip
    cpio -ov < filelist.txt | gzip > archiv.cpio.gz
    a rozbalit
    zcat archiv.cpio.gz | cpio -idv
    případně se dá použít přepínač --no-absolute-filenames aby se to nerozbalilo na původní místo ale do aktuálního adresáře. Doporučuju ale mít v tom seznamu souborů taky všecky adresáře a podadresáře v cestě k souboru. Jinak se nemusí zachovat jejich původní práva.
    23.4. 16:16 Jarda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Moc díky za radu. Začal jsem to používat
    23.4. 23:04 bajus
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Vyzkoušel jsem, ale má to nějaký zvláštní omezení oproti tar.gz. Například mám Thunderbird s profilem na sdb1 a cpio.gz zabalí jenom prázdný adresář Thunderbird bez podadresáře Profiles/bajus.mail... takže vlastně nic. Ve filelistu mám cestu a Thunderbird.
    24.4. 14:41 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Tak jestli máš v tom filelistu jenom jeden řádek, cpio ti zabalí jenom jeden soubor. Neprohledává ty adresáře rekurzivně. Jestli chceš zabalit sakumprásk všecko v adresáři Thunderbird, předhoď mu jako vstup výstup programu find.
    find Thunderbird | cpio -vo | gzip > Thunderbird.cpio.gz
    nebo
    cd Thunderbird; find | cpio -vo | gzip > ../Thunderbird.cpio.gz
    Některé verze taru prý neumí číst soubory ze seznamu tam se cpio hodí použít, ale na obyčejné rekurzivní balení všeho je tar lepší.
    18.4. 08:24 X
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    -p, --preserve-permissions
    extract information about file permissions (default for superuser)
    
    18.4. 10:40 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Dělám to jako root, tak ten přepínač nemá nanic vliv vůbec.
    18.4. 12:20 Vtipnéř | skóre: 38 | blog: Vtipnéřův blog | Brno
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Dělám to jako root, tak ten přepínač nemá nanic vliv vůbec.
    Nepomohlo by přidat --same-owner (viz zde)?
    Opening Windows is better than washing them. Clearing Windows (e.g. erasing or deleting) is even much better.
    18.4. 10:49 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    A ten zoznam zálohovaných objektov z akého dôvodu nemôže obsahovať aj priečinky (adresáre)?

    Vyextrahovať to z hootvého zoznamu cez dirname a uniq by mala byť hračka. Ale nechce sa mi to testovať.
    20.4. 20:28 Vlado99 | skóre: 10 | blog: vlado99
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Áno, toto je cesta. Len treba pridať --no-recursion, pretože chceme iba tie adresáre, nie všetky súbory v nich:
    #!/bin/bash
    # mapfile číta po riadkoch, tak nebude problém s medzerami v názvoch súborov
    # Ak ale súbory majú v názve "\n", chcelo by to iný prístup
    mapfile -t < list
    # Vyrobíme si ten zoznam adresárov
    for F in "${MAPFILE[@]}" ; do dirname "$F" ; done | sort -u >list-with-dirs
    # Pridáme zoznam súborov
    cat list >>list-with-dirs
    # --no-recursion zabezpečí, že sa v archíve budú iba požadované súbory a adresáre bez obsahu
    sudo tar -czf archive.tgz -C source --no-recursion -T list-with-dirs
    
    21.4. 08:29 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    To ale nebude fungovat pro vnořené adresáře. Zkus
    mkdir -p /tmp/a/b/c/d/e/f
    touch /tmp/a/b/c/d/e/f/file
    find /tmp/a -type f > /tmp/list
    mapfile -t < /tmp/list
    for F in "${MAPFILE[@]}" ; do dirname "$F" ; done | sort -u
    to vypíše jenom ten poslední adresář
    /tmp/a/b/c/d/e/f
    
    Aby to fungovalo tak by ten výstup měl vypadat nějak takto:
    /tmp
    /tmp/a
    /tmp/a/b
    /tmp/a/b/c
    /tmp/a/b/c/d
    /tmp/a/b/c/d/e
    /tmp/a/b/c/d/e/f
    21.4. 12:46 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    filelist=/tmp/filelist.txt
    dirlist=/tmp/dirlist.txt
    IFS="\n"
    t=$(mktemp)
    cat $filelist |
    while read f; do
        cd "$(dirname $f)"
        until [ "$(pwd)" = "/" ]; do
            pwd >> $t
            cd ..
        done
    done
    sort -u < $t > $dirlist 
    cat $dirlist $filelist > /tmp/list.txt
    rm $t $dirlist
    tar -czvf archive.tgz --no-recursion -T /tmp/list.txt
    Toto mi jakžtakž funguje, ale myslím že použitelné to bude maximálně do pár desítek/stovek souborů protože ta rychlost je tragická. Tak teď nevím co je menší zlo. Jestli toto nebo ten rsync :-/
    21.4. 22:56 Vlado99 | skóre: 10 | blog: vlado99
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Rýchlosť sa trochu zlepší, keď sa zbavíš zbytočných cd a pwd. Hlavný problém je ale v tom, že sa každý adresár vyhodnocuje stále dokola znova a znova. Toto by mohlo pomôcť:
    declare -A processed
    mapfile -t < list
    for F in "${MAPFILE[@]}" ; do
            F="$(dirname "$F")"
            while [ "$F" != "." -a "$F" != "/" ] ; do
                    test -z "${processed[$F]:+_}" || break
                    echo "$F"
                    processed[$F]=1
                    F="$(dirname "$F")"
            done
    done | sort >list-with-dirs
    cat list >>list-with-dirs
    sudo tar -czf archive.tgz -C source --no-recursion -T list-with-dirs
    
    P.S.: sort -u by už nemal byť potrebný, možno ani sort.
    22.4. 07:19 jejda | skóre: 24 | blog: jejda
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Hm tak toto už vypadá líp. Je to asi třikrát rychlejší jak ten můj pokus. 20000 řádků to přechroupe zhruba za 15 sekund. To už se dá používat. V těch složených závorkách se odehrává nějaká magie které zatím moc nerozumím. No každopápádně děkuju.
    22.4. 10:45 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Jaká magie? Normální práce s obsahem a názvy proměnných.
    22.4. 13:18 X
    Rozbalit Rozbalit vše Re: tar a čtení z listu
    Naji si v manualu "Parametr Expansion".

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.