cp * meglepett

Egy tanulsággal lettem gazdagabb tegnap.

Át akartam menteni régi SSD-m adatait egy külső tárolóra, és a cp -R * erre/ parancsot használtam.

Később láttam, hogy a "rejtett fájlok" (magyarán a .-tal kezdődő fájlok és könyvtárak) nem lettek átmásolva (így a .ssh és a .mozilla sem). Nem gondoltam, hogy megkülönböztetést kapnak a .fájlok. 

https://superuser.com/questions/61611/how-to-copy-with-cp-to-include-hi… - ezt hamarabb kellett volna olvasnom. Valahogy elkerülte a figyelmem, pedig nem ma kezdtem. Lehet, hogy a túlzott mc használat fedte el ezt előlem, ahol is elég volt a kijelölés + F5...

Hozzászólások

Át akartam menteni régi SSD-m adatait egy külső tárolóra

Ez több filozófiai kérdést is felvet, mert a parancs

- Nem ment, csak másol. Tehát jogosultság, timestamp, acl, kimarad.

- Struktúra mentésénél - ahogy a linken is írják - nem fájlokat kell megadni. Célszerübb az egy szinttel feljebb levő dir-t, vagy listát használni.

- A * jelentése iinkább a mindenre illeszkedő minta, nem a "minden fájl".

Ha ezek az elvek rögzülnek, akkor változik a hozzáállásod és nem fogod az mc-re. ;)

Esetleg gyakrabban előkerül a find, tar, cpio.

Igen, ezt a témát célszerű lesz jobban átrágnom, csak mivel nem kell túl gyakran, idővel feledésbe merül. (A . jelzését a kurrens könyvtárra, meg a -p kapcsolót szoktam használni egyébként, de ezentúl a -a-t is fogom, köszönet NevemTevének.)

Volt, hogy az rsync-kel is ügyködtem, azzal lehet "progress bar"-t is odavarázsolni, csak most nem akartam ezzel bajlódni.

Amúgy külön gondot okozott itt, hogy néhány fájl (pl. dockeres volume-on belüli psql alkönyvtár) csak rootként volt elérhető (a home könyvtáron belül is), úgyhogy rootként kezdtem másolni. (Lehetett volna persze úgy is, hogy utólag odamásolgatom a root jogosultságú könyvtárakat, de ez sem igazán megnyugtató megoldás.)

Az mc egyébként valóban nem tehet semmiről, szeressük. :o)

Szerkesztve: 2020. 02. 05., sze – 10:31

Sőt, GNU-cp esetén:

cp -a . oda_ahova/

Ahol a -a a -dR --preserve=all szinonímája.

rsync -aAX ./ ../erre    # A --> acl     X --> xattrs

shopt -s dotglob

A gyors gondolat többet ér, mint a gyors mozdulat.

Egyszer el kellene már olvasnom a doksit, de mindig attól szorongok, hogy a cp, rm, chmod, chown, és így tovább, rekurzívan használva ponttal kezdődő glob esetén netán felmászik a .. mentén akár a gyökérig.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ez tényleg hogy van? Azt nézem, hogy a shell kibontja a . és .. neveket a .* globra. Ugye, ezt egy echo .* paranccsal könnyű megnézni. Akkor például egy

rm -rf .* *

mit csinál pontosan? Mert az rm meg fogja kapni a .-ot, sőt annak ősét is, a ..-ot. Vagy kivételt tesz?

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Hidd el, én mindenki másnál jobban szorongok! ;)

Mindig is bámultam azokat a varázslókat, akik bármilyen parancs bármilyen opcióját bármikor képesek bármire alkalmazni. Legalább olyan erény ez, mint Budapest összes járatát egyszer állva és egyszer ülve végigutazni. Hiszen megvettem a bérletet!

Általában, ha bármilyen kétséged merül fel egy parancs kiadásakor, akkor nem specifikáltad elég pontosan a feladatot. Ilyenkor tessék írni még egy fél sor programot a pontosításhoz! Tehát a parancs LIST elemeit pontosan fel kell sorolni, akár több típusú elemből összerakva. A másik út az, amikor mindenféle ravasz opcióval a shell LIST képzési szabályait módosítod - mert úgy kényelmesebb.  Aztán lecsap a derült égből a meglepi. ;)