Portál AbcLinuxu, 4. května 2024 01:36


Dotaz: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?

1.12.2010 14:27 TJD
Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Přečteno: 6989×
Odpovědět | Admin
Přátelé, myslete si o mně že jsem úplný idiot, ale hlavně mi prosím někdo poraďte jak zkopírovat příkazem cp (nebo jiným) obsah jednoho adresáře včetně podadresářů a jejich obsahu /i skryté soubory/ do jiného adresáře: /abc/bbb/vše ---> /xyz/aaa/vše (takto by to mělo vypadat) Buď se mi podaří zkopírovat jen podadresáře s obsahem a skryté soubory a podadresáře zůstanou na disku, nebo se zkopíruje celý adresář vše - výsledek vypadá takto: /xyz/aaa/bbb/vše (správně by mělo být jen /xyz/aaa/vše) Je mi trapně, vím, že vypadám jak debil, manuálové stránky jsem přečetl, mnoho parametrů vyzkoušel a nejde to. Děkuji. PS: já totiž kopíruji pomocí MC ale teď to potřebuji dát do scriptu a jsem v háji :-(

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.12.2010 14:39 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Odpovědět | | Sbalit | Link | Blokovat | Admin
cp --archive --verbose /abc/bbb/vše /xyz/aaa
1.12.2010 15:31 TJD
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Bohužel to nefunguje. Asi jsem se blbě vyjádřil. Potřebuji aby se "vše" z adresáře /abc/bbb ocitlo v adresáři /xyz/aaa

Takto se tam buď vytvoří adresář "bbb", který obsahuje sice to co potřebuji, ale já to potřebuji mít o úroveň výš, tedy bez "bbb" rovnou v "aaa" (takto je to to když dám cp /abc/bbb), nebo se zkopírují jen podadresáře s obsahem, skryté podadresáře a soubory ne (když dám cp /abc/bbb/*) - parametry vynechávám pro zkrácení. Tedy měl by to být ekvivalent tohoto:

MC levé okno "bbb", pravé okno "aaa" - vše v "bbb" označím a F5 zkopíruji do "aaa" - toto bych potřeboval udělat příkazem (klidně i více příkazy) - leč nedaří se mi. Díky.
Marián Kyral avatar 1.12.2010 15:50 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
mkdir /xyz/aaa
cp --archive --verbose /abc/bbb/* /xyz/aaa/
cp --archive --verbose /abc/bbb/.* /xyz/aaa/
Tohle bude fungovat jen pokud tam není moc souborů. V opačném případě by se to muselo udělat buď přes find nebo nebo přes ls a cyklus.
1.12.2010 16:03 TJD
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Děkuji mnohokrát - toto šlape jak jsem si to představoval. Jen technická - proč by měl být problém (kromě rychlosti) při více souborech? A co je to hodně ? :-) (kopíruju domácí adresář po prvním přihlášení - je to taková specialita ale na delší vysvětlování - tak nevím jestli je jich moc nebo málo, každopádně to bylo vcukuletu). Ješte jednou moc díky. (všem)
1.12.2010 16:05 TJD
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Tak zpět, teď jsem to pořádně prohlédl a vzalo to i soubory o úroveň výše. (.*)
1.12.2010 16:13 TJD
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Tedy upřesnňuji - funguje to, ale je tam navíc i vše z "xyz" - to udělá ta tečka před zástupnou hvězdičkou. Taková blbost a jakej problém - to bych nevěřil - každopádně díky za snahu pomoci. Udělal bych to tím MC, ale je toho skoro 400 adresářů, kam se má ten jeden nakopírovat - proto jsem chtěl udělat script.
1.12.2010 16:37 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
mkdir --parents /xyz/aaa
cp --archive --verbose /abc/bbb/* /xyz/aaa/
GLOBIGNORE=".:.." cp --archive --verbose /abc/bbb/.* /xyz/aaa/

Mělo by to fungovat, ale nezkoušel jsem to.

1.12.2010 17:17 TJD
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Díky, ale bohužel stejný výsledek - zkopíruje to do "aaa" vše co je v "bbb" (to je OK), ale navíc také vše co je v "abc". Tedy jako bych přesunul to co je v "bbb" o úroveň výš a pak to celé nakopíroval do "aaa".

Ve windows to funguje takto:

C:\>xcopy /E /H C:\abc\bbb\*.* C:\xyz\aaa

Vyzkoušeno - bez problémů (H kopíruje i skryté soubory, E i adresáře včetně vnořených). Nechce se mi věřit, že by to v Linuxu nějak jednoduše nešlo.
1.12.2010 17:32 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
mkdir --parents /xyz/aaa
cd /abc/bbb
GLOBIGNORE=".:.." cp --archive --verbose * .* /xyz/aaa/
1.12.2010 17:44 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
1.12.2010 18:52 TJD
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Tak bohužel se to pořád chová stejně. Jak se dá .* tak to zkopíruje i obsah adresáře vyšší úrovně (místo skrytých souborů). Asi se do toho pustím tím MC - 400x :-) Ještě bych to mohl zkusit přes WINE windowsovským xcopy :-) To by byla potupa. Ach jo. Každopádně moc díky.
1.12.2010 19:08 iKoulee | skóre: 19
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Jeste je treba promenou GLOBIGNORE vyexportovat..

mkdir --parents /xyz/aaa cd /abc/bbb export GLOBIGNORE=".:.."; cp --archive --verbose * .* /xyz/aaa/

ale osobne mi prijde jako jednodusi pouzit ten rsync jak jiz psal nekdo v diskuzi dole

rsync -av /abc/bbb/vše/ /xyz/aaa/vše/

jen pozor na to ze rsync rozlisuje zda je cesta ukoncena lomitkem nebo ne pokud lomitko nedoplnite, kopiruje se do cilove cesty i adresar "vše"

rsync -av /abc/bbb/vše /xyz/aaa/

pokud by chybelo lomitko na konci druheho argumentu adresar "vše" by byl prejmenovan na aaa

Pekny den.
Even if you fall on your face, you’re still moving forward
1.12.2010 19:09 iKoulee | skóre: 19
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Jeste me napadla jedna vec.

Pozor na rsync nerozumi hardlinkum, tzn. pokud mate jeden soubor a na nej hromadu hardlinku, v zaloze bude hromada souboru.
Even if you fall on your face, you’re still moving forward
1.12.2010 19:12 iKoulee | skóre: 19
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Omlouvam se, tak snad jeste jednou a citelne (to je tak kdyz clovek uz specha domu):
mkdir --parents /xyz/aaa cd /abc/bbb
export GLOBIGNORE=".:.."; cp --archive --verbose * .* /xyz/aaa/
Even if you fall on your face, you’re still moving forward
1.12.2010 19:29 TJD
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Tak to šlape - super, díky moc. Vyzkouším i ten rsync, ale takhle mi to stačí, paráda. Dík.
1.12.2010 19:39 TJD
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Tak i rsync chodí super - děkuji moc všem, moc jste mi pomohli. Tj.
1.12.2010 19:17 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Jeste je treba promenou GLOBIGNORE vyexportovat..

Na to jsem zapomněl. Mám už taky hlavu na čepici. :-)

1.12.2010 14:40 manasekp | skóre: 29 | blog: manasekp | Brno
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Odpovědět | | Sbalit | Link | Blokovat | Admin
cp -a
kopiroval jsem tim cely disk a fungovalo to
BIOKOMP | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
1.12.2010 15:46 TJD
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Díky ale je to to samé - viz má odpověď výše.
stativ avatar 1.12.2010 16:23 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Normálně cp -a zdroj cíl, jak už to radili jiní. Akorát já přidám navíc užitečnou radu. Když nebude adresář /xyz/aaa existovat před tím, než zavoláš cp -a /abc/bbb/vše /xyz/aaa, tak to udělá přesně to, co chceš. Pokud To takhle udělat nemůžeš, tak jsi v háji a budeš to muset nějak obejít (napadá mě použití find .... -exec install ...)
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
Řešení 1× (iKoulee)
1.12.2010 18:52 volvox | skóre: 16
Rozbalit Rozbalit vše Re: Přikaz cp (copy) - jak zkopírovat celý obsah adresáře?
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co místo cp použít rsync:
rsync --archive --delete --relative /abc/bbb/vše /xyz/aaa/vše

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.