Skip to content
Tiantan
Articles

A cp -r és a cp -R (copy parancs) közötti különbség

On február 18, 2021 by admin

cp -r a fájlok rekurzív másolására szolgál, és cp -R a könyvtárak rekurzív másolásához. De ellenőriztem, és úgy tűnik, hogy mind a fájlokat, mind a könyvtárakat másolom, ugyanazt. Tehát mi a különbség valójában?

Megjegyzések

  • Ezeknek az opcióknak a Linux kézikönyvekben történő minden említése azt mondja, hogy ‘ szinonimák. (‘ nem szerepelnek más unix változatokon.)

Válasz

Míg a -R posix jól meghatározott, a -r nem hordozható!

Linux rendszeren a cp, -r és -R GNU és BusyBox megvalósításai ekvivalensek.

A másik oldalon, ahogy a cp POSIX kézikönyv oldalán olvashatja , -r viselkedés a megvalósítás által meghatározott .

 * If neither the -R nor -r options were specified, cp shall take actions based on the type and contents of the file referenced by the symbolic link, and not by the symbolic link itself. * If the -R option was specified: * If none of the options -H, -L, nor -P were specified, it is unspecified which of -H, -L, or -P will be used as a default. * If the -H option was specified, cp shall take actions based on the type and contents of the file referenced by any symbolic link specified as a source_file operand. * If the -L option was specified, cp shall take actions based on the type and contents of the file referenced by any symbolic link specified as a source_file operand or any symbolic links encoun- tered during traversal of a file hierarchy. * If the -P option was specified, cp shall copy any symbolic link specified as a source_file operand and any symbolic links encoun- tered during traversal of a file hierarchy, and shall not follow any symbolic links. * If the -r option was specified, the behavior is implementation- defined. 

Megjegyzések

  • Az egyik különbség az lehet, hogy például az OSX-ben a -r a szimbolikus linkekkel jelölt valós fájlokat másolja, míg a -R másolja át a szimbolikus linket, amire a legtöbbször szánják.

Válasz

Kisbetű -r egy régebbi opció volt, amelyet a 4.1BSD-ben vezettek be, amely egyszerűen az összes nem könyvtárat fájlokká másolja. Vagyis, ha egy eszközzel vagy FIFO-val találkozott, akkor azt kinyitotta, elolvasta a tartalmat és a célállomáson létrehozott egy fájlt a tartalommal.

Nagybetű -R egy szabványosított opció volt (a BSD-be a 4.4BSD-ben vezették be, bár a korábbi verziók a -r szinonimája volt), amely egy eszköz, FIFO vagy más speciális fájl találkozásakor készítsen egy egyenértékű speciális fájlt a rendeltetési helyen.

Sok megvalósítás továbbra is fenntartja ezt a megkülönböztetést, de néhány (beleértve a Linuxra jellemző GNU verziót is) csak a -R szemantika, -r szinonimaként.

Válasz

A különbség az, hogy az egyik kis R betűt, a másik nagy R betűt használ. Ezen túl nincs különbség. Ugyanez, ha a --recursive long opciót használja.

Megjegyzések

  • A man oldalról: – R, -r, – rekurzív – a könyvtárakat rekurzívan másolja
  • @DaveJennings: Az, hogy egy platformon ekvivalensek, még nem jelenti azt, hogy mindegyiken vannak. A cp néhány megvalósításánál valóban különbséget lehet tenni. Lásd: Véletlenszerű 832 ‘ válasza . @Ignacio tartalmazzon ebbe a válaszba egy minősítőt, amely azt mondja: “, ha a cp a modern GNU implementáció >

vagy valami ilyesmi.

  • @Caleb: A kérdés címkéje ” linux “. Mi lenne ez még?
  • -R és -r eltérő viselkedést kölcsönöznek egyes általam használt rendszereknek (OS X, FreeBSD, BusyBox coreutils; nem biztos, hogy melyik jelenleg). Már régen úgy döntöttem, hogy körültekintő mindig csak a -R -t használni, és valójában az imént említett rendszerek néhány man oldala is ezt ajánlja.
  • Válasz

    OS X és a FreeBSD régi verzióiban -r olyan, mint -R -L --copy-contents a coreutils fájlban, vagy a szimbólumokat követve olvassa el a speciális fájlok és FIFO-k tartalmát. OS X, mkdir a;mkfifo a/b;cp -r a c blokkolva lesz a FIFO olvasása közben, és mkdir a;ln -s /dev/zero a;cp -r a b megkezdi a nullát a nullával .

    Az

    man oldalról az OS X-ben és a FreeBSD régi verzióiban:

    Historic versions of the cp utility had a -r option. This implementation supports that option; however, its use is strongly discouraged, as it does not correctly copy special files, symbolic links, or fifo"s. 

    A FreeBSD új verzióiban -r egyenértékű a következővel: -RL:

    Historic versions of the cp utility had a -r option. This implementation supports that option, however, its behavior is different from historical FreeBSD behavior. Use of this option is strongly discouraged as the behavior is implementation-dependent. In FreeBSD, -r is a synonym for -RL and works the same unless modified by other flags. Historical imple- mentations of -r differ as they copy special files as normal files while recreating a hierarchy. 

    http://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html :

    --copy-contents

    Rekurzív másolás esetén másolja a speciális fájlok (például FIFO-k és eszközfájlok) tartalmát úgy, mintha azok rendes fájlok lennének. Ez azt jelenti, hogy megpróbálja elolvasni az egyes forrásfájlok adatait, és beírja azokat a rendeltetési helyre. Általában hiba ezt az opciót használni, mivel általában nemkívánatos hatással van az olyan speciális fájlokra, mint a FIFOs, és azokra, amelyek általában a /dev könyvtárban találhatók.A legtöbb esetben a cp -R --copy-contents a végtelenségig lóg, és megpróbál olvasni a FIFO-ból és olyan speciális fájlokból, mint a /dev/console, és kitölti a céllemezt, ha a /dev/zero másolásához használja. Ennek az opciónak csak a rekurzív másolásakor van hatása, és ez nem befolyásolja a szimbolikus hivatkozások másolását.

    Válasz

    az egyik különbség, amelyet azt tapasztaltam, hogy -r nem másolja a rejtett könyvtárakat, míg az -R a rejtett könyvtárakat.

    Kipróbáltam a .git könyvtárat a célkönyvtárban, és a fenti következtetésre jutottam. Jelenleg a centOS-t használom.

    Lehet, hogy tévedek, de nyitott a vita tárgyára.

    Megjegyzések

    • Nem teszem ‘ ezt nem látja a CentOS 5-en; -r és -R mindkettő rejtett könyvtárakat másol

    Written by admin

    Vélemény, hozzászólás? Kilépés a válaszból

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

    Legutóbbi bejegyzések

    • Rezonáns dipólusú balun használatával
    • Mi a különbség “ nem ” és “ nem ? [duplicate]
    • A JFK-n tud-e mozogni a belföldi járatokon a terminálok repülőtere között?
    • “ Mélyen értékelik ” vagy “ nagyra értékelik ”
    • Mit jelent az ' elvont ötletek '? [zárt]

    Archívum

    • 2021 február
    • 2021 január
    • 2020 december
    • 2020 november
    • Deutsch
    • Nederlands
    • Svenska
    • Norsk
    • Dansk
    • Español
    • Français
    • Português
    • Italiano
    • Română
    • Polski
    • Čeština
    • Magyar
    • Suomi
    • 日本語
    • 한국어

    Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

    Back to top