cp - fájlok és könyvtárak
másolása
ÁTTEKINTÉS
cp [opciók] fájl
útvonal
cp [opciók] fájl...
könyvtár
POSIX opciók: [-fipRr] [--]
GNU opciók (legrövidebb forma):
[-abdfilprsuvxPR] [-S UTÓTAG] [-V
{numbered,existing,simple}] [--sparse=MIKOR]
[--help] [--version] [--]
A cp parancs fájlokat (vagy, opcionálisan,
könyvtárakat) másol. Másolható vele
egyetlen fájl a megadott helyre, vagy akár
végtelenül sok fájl egy
célkönyvtárba.
Ha az utolsó argumentum egy létező
könyvtárat jelöl, a cp minden forrás
fájlt abba a könyvtárba másol be
(ugyanazon nevet megtartva). Ellenben, ha csak két fájl adott,
az elsőt a másodikra másolja. Hibát jelent, ha
az utolsó argumentum nem könyvtár, és
több mint két nem-opció argumentum van megadva.
(Így a `cp -r /a /b' /a-t /b/a-ba másolja és
a /a/x-et /b/a/x-be akkor, ha a /b létezik, de /a-t /b-be és
/a/x-et /b/x-be helyezi, ha korábban nem volt /b
könyvtár.
A másoláskor keletkező fájlok
és könyvtárak jogai ugyanazok lesznek, mint az eredeti
állományoké, 0777 értékkel végzett
ÉS művelet után és a felhasználó
umask-jával módosítva (kivéve, ha a -p
opció meg van adva). (A rekurzív másolás
idejére az újonnan keletkezett könyvtárak
átmenetileg a végleges mód helyett az S_IRWXU (0777)
értékkelel és VAGY művelettel képzett
módot kapják meg, hogy a processz olvasni, írni
és keresni tudja ezeket a könyvtárakat).
Semmi nem történik akkor, ha egy fájlt
önmagába másolunk (kivéve azt, hogy
valószínűleg hibaüzenetet kapunk). Ha egy
létező másik fájlba másolunk, az az
`open(path, O_WRONLY | O_TRUNC)' hívással lesz megnyitva.
Új fájlba másolás esetén az
állomány az `open(path, O_WRONLY | O_CREATE, mód)'
segítségével lesz létrehozva. Amennyiben ez
sikertelen, a fájl már létezett; ha a -f opció
lett megadva, a cp megpróbálja törölni a
meglévő fájlt (vagy megszüntetni a
linkelését), majd ha ez lezajlik, új
fájlként végzi el rajta a másolást.
A POSIX négy és fél opciót ismer:
- -f
- A létező fájlok törlése, amennyiben
szükséges (lásd feljebb).
- -i
- A létező célfájlok
felülírására rákérdez. (A
kérdést az stderr-re írja, a választ az
stdin-ről olvassa be. Csak megerősítő
válasz esetén másol.)
- -p
- Megőrzi az eredeti fájl tulajdonosát,
csoportját, jogosultságait (beleértve a setuid
és setgid biteket), az utolsó módosítás
valamint az utolsó hozzáférés idejét.
Ha a tulajdonos és csoport duplikálása sikertelen, a
setuid és setgid bitek törlődnek.
(Megjegyzendő, hogy ezután az eredeti és a
másolat utolsó hozzáférési ideje
eltérhet, mivel a másolás művelete a
forrásfájlhoz való hozzáférést
takar).
- -R
- A könyvtárakat rekurzívan másolja és a
megfelelő műveleteket végzi az olyan objektumokon,
amelyek nem hagyományos fájlok illetve
könyvtárak. (Így egy FIFO vagy speciális
fájl másolata is FIFO vagy speciális fájl
lesz).
- -r
- A könyvtárakat rekurzívan másolja, illetve
valamilyen nem specifikált műveletet végez az olyan
objektumokon, amelyek nem hagyományos fájlok illetve
könyvtárak. (Ezért lehetséges és
voltaképp támogatott a -r opció használata a
-R szinonimájaként, de nem lehet kizárni, hogy a
cp jelenlegi GNU verziója (lásd lentebb)
ostobán viselkedik az ilyen esetekben.)
- --
- Lezárja az opciók listáját.
Általában véve, a fájlok
rögtön az olvasás után írásra
kerülnek. A kivételek tekintetében lásd
alább a --sparse opciót.
Alapértelmezésben a `cp' nem másol
könyvtárakat (lásd alább az -r
opciót).
A cp általában visszautasítja a
fájl önmagába való
másolását, a következő kivétellel:
ha a --force és a --backup opció van megadva, a
forrás és a cél azonos és egy
szokványos fájlra utal, a cp a megszokott módon
egy mentésfájlt (backup) készít (a megadottak
szerint egyszerűt vagy számozottat). Ez akkor hasznos, ha
egyszerűen másolatot akarunk készíteni egy
fájlról a módosítása elott.
- -a, --archive
- Amennyire csak lehetséges, megőrzi az eredeti fájlok
struktúráját és jellemzőit (attributes)
a másolatban. Ugyanaz, mint -dpR.
- -d,
--no-dereference
- A szimbolikus csatolásokat (symbolic link) szimbolikus
csatolásként másolja ahelyett, hogy az általuk
mutatott fájlokat másolná, továbbá
megőrzi az erős csatolás (hard link) kapcsolatokat a
forrásfájlok között a másolatban.
- -f, --force
- A létező célfájlok törlése,
rákérdezés nélkül.
- -i, --interactive
- A felhasználó megkérdezése arról, hogy
felülírhatók-e a létező
célfájlok.
- -l, --link
- Erős csatolások (hard link) létrehozása a nem
könyvtár állományok másolása
helyett.
- -p, --preserve
- Megőrzi az eredeti fájl tulajdonosát,
csoportját, jogosultságait és
időbélyegeit.
- -P, --parents
- A célfájlok nevének kialakítása a
következőképpen történik: a
célkönyvtár neve egy perjellel (/), majd a
forrásfájl(ok) nevével lesz
kiegészítve. A cp-nek átadott utolsó
argumentum egy létező könyvtár neve kell
legyen. Például a `cp --parents a/b/c existing_dir' parancs
az a/b/c fájlt existing_dir/a/b/c -be másolja,
létrehozva az összes hiányzó köztes
könyvtárat.
- -r
- A könyvtárak rekurzív másolása. A nem
könytár és nem szimbolikus link fájlokat (pl.
FIFO-k és speciális fájlok) reguláris
fájlként másolja. Ez azt jelenti, hogy minden
forrásból megpróbálja olvasni az adatokat
és a célba írni. Így, ezzel az opcióval
a `cp' nem meghatározható módon elakadhat egy FIFO
vagy a /dev/tty olvasásakor. (Ez egy hiba. Ez azt jelenti, hogy
kerülni kell a -r használatát és a -R-et
érdemes választani akkor, amikor a másolt
struktúra tartalmával nem vagyunk tisztában. Egy
ismeretlen eszközfájl (például scanner)
megnyitása váratlan hatással lehet a hardverre.)
- -R, --recursive
- A könyvtárakat rekurzívan másolja,
megőrizve a nem könyvtár fájlokat (lásd
fentebb a -r opciót).
- --sparse=
MIKOR
- Egy `ritka fájl' `lyukakat' tartalmaz - nulla bájtok
sorozatát, amelyek nem foglalnak fizikai diszk-blokkokat; a `read'
rendszerhívás ezeket nullaként olvassa. Ez
egyrészt jelentős helyet takaríthat meg,
másrészt növeli a sebességet, mivel
számos bináris állomány tartalmaz sok
folyamatos nulla bájtot. Alapértelmezésben a
cp egy durva heurisztikus módszerrel megtalálja a
lyukakat a bemeneti fájlokban és a megfelelő kimeneti
állományt is ritkává teszi.
A MIKOR érték a következő
lehet:
- auto
- Ez az alapviselkedés: a kimeneti fájl ritka, ha a bemeneti
is az.
- always
- A kimeneti fájl mindig ritka. Ez olyankor hasznos, ha az
inputfájlt tartalmazó fájlrendszer nem
támogatja a ritka állományokat, a fogadó
fájlrendszer azonban igen.
- never
- A kimeneti fájl sohasem ritka. Ha találsz alkalmazást
erre az opcióra, szóljál nekünk is.
- -s,
--symbolic-link
- A nem-könytár fájlokról másolat helyett
szimbolikus csatolást hoz létre. Minden
forrásfájlnév abszolút kell legyen (azaz
`/'-rel kezdődjön) hacsak nem a célfájlok az
aktuális könyvtárban vannak. Ez az opció
hibaüzenetet eredményez olyan rendszerekben, amelyek nem
támogatják az szimbolikus csatolásokat.
- -u, --update
- Nem másolja azokat a nem-könyvtár fájlokat,
amelyeknek azonos vagy újabb módosítási
idővel rendelkező célfájlja
létezik.
- -v, --verbose
- Kiírja minden fájl nevét, mielőtt
másolná.
- -x,
--one-file-system
- Átlépi azokat az alkönytárakat, amelyek
más fájlrendszerekben vannak, mint az, amelyben a
másolás elkezdődött.
Szükség esetén az olyan programok GNU
verziói, mint pl. a cp, mv, ln, install
és patch, mentést fognak végezni az olyan
fájlokról, amelyek felülíródnak,
megváltoznak vagy törlődnek. A mentés
szükségességét a -b opció jelzi. Azt,
hogy a mentésfájlok nevét hogyan kell képezni, a
-V opció adja meg. Abban az esetben, ha a mentésfájl
nevét az eredeti névhez egy utótag
toldásával kell képezni, a -S kapcsolóval lehet
kijelölni az utótagot.
- -b, --backup
- Mentést készít azokról a
fájlokról, amelyek felülíródnak vagy
törlődnek.
- -S UTÓTAG,
--suffix=UTÓTAG
- Minden mentésfájl nevének végéhez
hozzáfűzi a UTÓTAG-ot. Ha ez az opció
nincsen megadva, a SIMPLE_BACKUP_SUFFIX környezeti
változó értékét használja.
Amennyiben a környezeti változó sem adott, a
végződés `~' lesz.
- -V MÓD,
--version-control=MÓD
Megadja, hogy a mentések hogyan lesznek elnevezve.
A
MÓD argumentum lehet `numbered' (vagy `t'), `existing' (vagy
`nil') vagy `never' (vagy 'simple'). Ha ez az opció nincsen megadva,
akkor a
VERSION_CONTROL környezeti változó
értékét használja. Ha
VERSION_CONTROL/-nak
nincs értéke, az alapértelmezett mentési
típus az `existing'.
Ez az opció megfelel az Emacs `version-control'
változójának. A MÓD lehetséges
értékei (egyértelmű
rövidítések elfogadva):
- `t'vagy`numbered'
- Mindig sorszámozott mentés készül.
- `nil'vagy`existing'
- Sorszámozott biztonsági mentést készít
azokról a fájlokról, melyeknek már van, a
többiekről pedig egyszerű mentést.
- `never'vagy`simple'
- Mindig egyszerű mentés készül.
- --help
- Használati útmutatót ír a szabványos
kimenetre, majd kilép.
- --version
- A program verziójáról ír ki
információt a szabványos kimenetre, majd
kilép.
- --
- Lezárja az opciók listáját.
A LANG, LC_ALL, LC_COLLATE, LC_CTYPE és LC_MESSAGES
környezeti változók a szokásos
jelentéssel rendelkeznek. A GNU verzióban a
SIMPLE_BACKUP_SUFFIX és a VERSION_CONTROL változók a
fent leírt módon szabályozzák a
mentésfájlok elnevezését.
Ez az oldal azt a cp-t írja le, ami a fileutils-4.0
csomagban található; más változatok
némileg eltérhetnek.
Javításokat és kiegészítéseket az
aeb@cwi.nl címre lehet küldeni (angolul).
A hibákat a fileutils-bugs@gnu.ai.mit.edu címen lehet jelenteni
(angolul).
Horváth András <horvatha@rs1.szif.hu>
Magyari Miklós <magyari@freemail.hu>