cp(1p) - phpMan

Command: man perldoc info search(apropos)  


CP(P)                                                                    CP(P)



NAME
       cp - copy files

SYNOPSIS
       cp [-fip] source_file target_file

       cp [-fip] source_file ... target

       cp -R [-H | -L | -P][-fip] source_file ... target

       cp -r [-H | -L | -P][-fip] source_file ... target


DESCRIPTION
       The  first  synopsis form is denoted by two operands, neither of which are existing
       files of type directory. The cp utility shall copy the contents of source_file (or,
       if source_file is a file of type symbolic link, the contents of the file referenced
       by source_file) to the destination path named by target_file.

       The second synopsis form is denoted by two or more operands  where  the  -R  or  -r
       options  are  not specified and the first synopsis form is not applicable. It shall
       be an error if any source_file is a file of type  directory,  if  target  does  not
       exist,  or if target is a file of a type defined by the System Interfaces volume of
       IEEE Std 1003.1-2001, but is not a file of type directory.  The  cp  utility  shall
       copy  the  contents  of each source_file (or, if source_file is a file of type sym-
       bolic link, the contents of the file referenced by source_file) to the  destination
       path  named  by the concatenation of target, a slash character, and the last compo-
       nent of source_file.

       The third and fourth synopsis forms are denoted by two or more operands  where  the
       -R  or  -r  options are specified.  The cp utility shall copy each file in the file
       hierarchy rooted in each source_file to a destination path named as follows:

        * If target exists and is a file of type directory, the name of the  corresponding
          destination  path for each file in the file hierarchy shall be the concatenation
          of target, a slash character, and the pathname  of  the  file  relative  to  the
          directory containing source_file.


        * If  target does not exist and two operands are specified, the name of the corre-
          sponding destination path for source_file shall be target; the name of the  cor-
          responding  destination  path for all other files in the file hierarchy shall be
          the concatenation of target, a slash character, and the  pathname  of  the  file
          relative to source_file.


       It shall be an error if target does not exist and more than two operands are speci-
       fied, or if target exists and is a file of a type defined by the System  Interfaces
       volume of IEEE Std 1003.1-2001, but is not a file of type directory.

       In  the  following  description, the term dest_file refers to the file named by the
       destination path. The term source_file refers to the file  that  is  being  copied,
       whether  specified  as  an  operand  or  a  file  in  a  file hierarchy rooted in a
       source_file operand. If source_file is a file of type symbolic link:

        * 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 encountered 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 encountered during traversal of
             a file hierarchy, and shall not follow any symbolic links.



        * If the -r option was specified, the behavior is implementation-defined.


       For each source_file, the following steps shall be taken:

        1. If source_file references the same file as dest_file, cp may write a diagnostic
           message  to standard error; it shall do nothing more with source_file and shall
           go on to any remaining files.


        2. If source_file is of type directory, the following steps shall be taken:

            a. If neither the -R or -r options were specified, cp shall write a diagnostic
               message  to  standard error, do nothing more with source_file, and go on to
               any remaining files.


            b. If source_file was not specified as an operand and source_file  is  dot  or
               dot-dot, cp shall do nothing more with source_file and go on to any remain-
               ing files.


            c. If dest_file exists and it is a file  type  not  specified  by  the  System
               Interfaces  volume of IEEE Std 1003.1-2001, the behavior is implementation-
               defined.


            d. If dest_file exists and it is not of type directory, cp shall write a diag-
               nostic  message  to standard error, do nothing more with source_file or any
               files below source_file in the file hierarchy, and go on to  any  remaining
               files.


            e. If  the  directory  dest_file does not exist, it shall be created with file
               permission bits set to the same value as those of source_file, modified  by
               the  file creation mask of the user if the -p option was not specified, and
               then bitwise-inclusively OR’ed with S_IRWXU. If dest_file  cannot  be  cre-
               ated,  cp  shall  write  a diagnostic message to standard error, do nothing
               more with source_file, and go on to any remaining files. It is  unspecified
               if cp attempts to copy files in the file hierarchy rooted in source_file.


            f. The  files  in  the  directory source_file shall be copied to the directory
               dest_file, taking the four steps (1 to 4) listed here  with  the  files  as
               source_files.


            g. If  dest_file  was  created,  its file permission bits shall be changed (if
               necessary) to be the same as those of source_file,  modified  by  the  file
               creation mask of the user if the -p option was not specified.


            h. The  cp  utility  shall  do  nothing more with source_file and go on to any
               remaining files.



        3. If source_file is of type regular file, the following steps shall be taken:

            a. If dest_file exists, the following steps shall be taken:

               i.   If the -i option is in effect, the cp utility shall write a prompt  to
                    the  standard  error  and  read a line from the standard input. If the
                    response is not affirmative, cp shall do nothing more with source_file
                    and go on to any remaining files.


               ii.  A  file  descriptor  for  dest_file  shall  be  obtained by performing
                    actions equivalent to the open() function defined in the System Inter-
                    faces  volume  of  IEEE Std 1003.1-2001  called using dest_file as the
                    path argument, and the bitwise-inclusive OR of O_WRONLY and O_TRUNC as
                    the oflag argument.


               iii. If  the attempt to obtain a file descriptor fails and the -f option is
                    in effect, cp shall attempt to remove the file by  performing  actions
                    equivalent  to  the unlink() function defined in the System Interfaces
                    volume of IEEE Std 1003.1-2001 called  using  dest_file  as  the  path
                    argument. If this attempt succeeds, cp shall continue with step 3b.



            b. If  dest_file  does  not exist, a file descriptor shall be obtained by per-
               forming actions equivalent to the open() function  defined  in  the  System
               Interfaces  volume  of  IEEE Std 1003.1-2001  called using dest_file as the
               path argument, and the bitwise-inclusive OR of O_WRONLY and O_CREAT as  the
               oflag  argument.  The file permission bits of source_file shall be the mode
               argument.


            c. If the attempt to obtain a file descriptor fails, cp shall write a diagnos-
               tic  message to standard error, do nothing more with source_file, and go on
               to any remaining files.


            d. The contents of source_file shall be written to the file  descriptor.   Any
               write errors shall cause cp to write a diagnostic message to standard error
               and continue to step 3e.


            e. The file descriptor shall be closed.


            f. The cp utility shall do nothing more with source_file.  If  a  write  error
               occurred  in  step 3d, it is unspecified if cp continues with any remaining
               files. If no write error occurred in step 3d, cp shall go on to any remain-
               ing files.



        4. Otherwise, the following steps shall be taken:

            a. If the -r option was specified, the behavior is implementation-defined.


            b. If the -R option was specified, the following steps shall be taken:

               i.   The dest_file shall be created with the same file type as source_file.


               ii.  If source_file is a file of type FIFO, the file permission bits  shall
                    be  the  same  as  those of source_file, modified by the file creation
                    mask of the user if the -p option was not  specified.  Otherwise,  the
                    permissions,  owner  ID, and group ID of dest_file are implementation-
                    defined.

               If this creation fails for any reason, cp shall write a diagnostic  message
               to  standard  error,  do  nothing  more  with source_file, and go on to any
               remaining files.


               iii. If source_file is a file of type symbolic link, the pathname contained
                    in   dest_file  shall  be  the  same  as  the  pathname  contained  in
                    source_file.

               If this fails for any reason, cp shall write a diagnostic message to  stan-
               dard  error,  do  nothing more with source_file, and go on to any remaining
               files.




       If the implementation provides additional or alternate  access  control  mechanisms
       (see  the Base Definitions volume of IEEE Std 1003.1-2001, Section 4.4, File Access
       Permissions), their effect on copies of files is implementation-defined.

OPTIONS
       The   cp   utility   shall   conform   to   the   Base   Definitions   volume    of
       IEEE Std 1003.1-2001, Section 12.2, Utility Syntax Guidelines.

       The following options shall be supported:

       -f     If a file descriptor for a destination file cannot be obtained, as described
              in step 3.a.ii., attempt to unlink the destination file and proceed.

       -H     Take actions based on the type and contents of the file  referenced  by  any
              symbolic link specified as a source_file operand.

       -i     Write  a prompt to standard error before copying to any existing destination
              file. If the response from the standard input is affirmative, the copy shall
              be attempted; otherwise, it shall not.

       -L     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
              encountered during traversal of a file hierarchy.

       -P     Take  actions on any symbolic link specified as a source_file operand or any
              symbolic link encountered during traversal of a file hierarchy.

       -p     Duplicate the following characteristics of each source file  in  the  corre-
              sponding destination file:

               1. The  time  of  last  data  modification and time of last access. If this
                  duplication fails for any reason, cp shall write a diagnostic message to
                  standard error.


               2. The  user  ID and group ID. If this duplication fails for any reason, it
                  is unspecified whether cp writes a diagnostic message to standard error.


               3. The file permission bits and the S_ISUID and S_ISGID bits. Other, imple-
                  mentation-defined, bits may be duplicated as well. If  this  duplication
                  fails  for  any  reason, cp shall write a diagnostic message to standard
                  error.


       If the user ID or the group ID cannot  be  duplicated,  the  file  permission  bits
       S_ISUID  and S_ISGID shall be cleared. If these bits are present in the source file
       but are not duplicated in the destination file, it is unspecified whether cp writes
       a diagnostic message to standard error.

       The order in which the preceding characteristics are duplicated is unspecified. The
       dest_file shall not be deleted if these characteristics cannot be preserved.

       -R     Copy file hierarchies.

       -r     Copy file hierarchies. The treatment of  special  files  is  implementation-
              defined.


       Specifying more than one of the mutually-exclusive options -H, -L, and -P shall not
       be considered an error.  The last option specified shall determine the behavior  of
       the utility.

OPERANDS
       The following operands shall be supported:

       source_file
              A pathname of a file to be copied.

       target_file
              A  pathname  of  an existing or nonexistent file, used for the output when a
              single file is copied.

       target A pathname of a directory to contain the copied files.


STDIN
       The standard input shall be used to read an input line in response to  each  prompt
       specified in the STDERR section. Otherwise, the standard input shall not be used.

INPUT FILES
       The input files specified as operands may be of any file type.

ENVIRONMENT VARIABLES
       The following environment variables shall affect the execution of cp:

       LANG   Provide  a  default  value  for  the internationalization variables that are
              unset or null. (See the Base  Definitions  volume  of  IEEE Std 1003.1-2001,
              Section  8.2,  Internationalization Variables for the precedence of interna-
              tionalization variables used to determine the values of locale  categories.)

       LC_ALL If  set  to  a  non-empty string value, override the values of all the other
              internationalization variables.

       LC_COLLATE

              Determine the locale for the behavior of ranges,  equivalence  classes,  and
              multi-character  collating  elements used in the extended regular expression
              defined for the yesexpr locale keyword in the LC_MESSAGES category.

       LC_CTYPE
              Determine the locale for the interpretation of sequences of  bytes  of  text
              data  as characters (for example, single-byte as opposed to multi-byte char-
              acters in arguments and input files) and the behavior of  character  classes
              used  in the extended regular expression defined for the yesexpr locale key-
              word in the LC_MESSAGES category.

       LC_MESSAGES
              Determine the locale for the processing of affirmative responses that should
              be  used to affect the format and contents of diagnostic messages written to
              standard error.

       NLSPATH
              Determine the location of message catalogs for the processing of LC_MESSAGES
              .


ASYNCHRONOUS EVENTS
       Default.

STDOUT
       Not used.

STDERR
       A  prompt  shall be written to standard error under the conditions specified in the
       DESCRIPTION section. The prompt shall contain the  destination  pathname,  but  its
       format  is otherwise unspecified.  Otherwise, the standard error shall be used only
       for diagnostic messages.

OUTPUT FILES
       The output files may be of any type.

EXTENDED DESCRIPTION
       None.

EXIT STATUS
       The following exit values shall be returned:

        0     All files were copied successfully.

       >0     An error occurred.


CONSEQUENCES OF ERRORS
       If cp is prematurely terminated by a signal or error, files or file hierarchies may
       be  only  partially copied and files and directories may have incorrect permissions
       or access and modification times.

       The following sections are informative.

APPLICATION USAGE
       The difference between -R and -r is in the treatment by cp of file types other than
       regular and directory.  The original -r flag, for historic reasons, does not handle
       special files any differently from regular files, but always  reads  the  file  and
       copies  its  contents.  This  has  obvious problems in the presence of special file
       types; for example, character  devices,  FIFOs,  and  sockets.  The  -R  option  is
       intended to recreate the file hierarchy and the -r option supports historical prac-
       tice.  It  was  anticipated   that   a   future   version   of   this   volume   of
       IEEE Std 1003.1-2001  would deprecate the -r option, and for that reason, there has
       been no attempt to fix its behavior with respect to FIFOs or other file types where
       copying  the  file  is clearly wrong. However, some implementations support -r with
       the same abilities as the -R defined in this  volume  of  IEEE Std 1003.1-2001.  To
       accommodate  them as well as systems that do not, the differences between -r and -R
       are implementation-defined. Implementations may make them identical. The -r  option
       is marked obsolescent.

       The  set-user-ID  and  set-group-ID bits are explicitly cleared when files are cre-
       ated. This is to prevent users from creating programs that are set-user-ID or  set-
       group-ID  to  them  when copying files or to make set-user-ID or set-group-ID files
       accessible to new groups of users. For example, if a file is  set-user-ID  and  the
       copy  has  a  different  group ID than the source, a new group of users has execute
       permission to a set-user-ID program than did previously.  In particular, this is  a
       problem for superusers copying users’ trees.

EXAMPLES
       None.

RATIONALE
       The  -i  option exists on BSD systems, giving applications and users a way to avoid
       accidentally removing files when copying. Although the 4.3  BSD  version  does  not
       prompt  if  the  standard  input is not a terminal, the standard developers decided
       that use of -i is a request for interaction, so when the destination  path  exists,
       the utility takes instructions from whatever responds on standard input.

       The exact format of the interactive prompts is unspecified. Only the general nature
       of the contents of prompts are specified because implementations  may  desire  more
       descriptive  prompts  than  those used on historical implementations. Therefore, an
       application using the -i option relies on the system to provide the  most  suitable
       dialog directly with the user, based on the behavior specified.

       The  -p  option is historical practice on BSD systems, duplicating the time of last
       data modification and time of last  access.  This  volume  of  IEEE Std 1003.1-2001
       extends  it  to  preserve  the user and group IDs, as well as the file permissions.
       This requirement has obvious problems in that the directories are almost  certainly
       modified  after being copied. This volume of IEEE Std 1003.1-2001 requires that the
       modification times be preserved. The statement that the order in which the  charac-
       teristics are duplicated is unspecified is to permit implementations to provide the
       maximum amount of security for the user. Implementations should take  into  account
       the  obvious  security issues involved in setting the owner, group, and mode in the
       wrong order or creating files with an owner, group,  or  mode  different  from  the
       final value.

       It is unspecified whether cp writes diagnostic messages when the user and group IDs
       cannot be set due to the widespread practice of users using -p  to  duplicate  some
       portion  of  the  file  characteristics,  indifferent to the duplication of others.
       Historic implementations only  write  diagnostic  messages  on  errors  other  than
       [EPERM].

       The  -r  option is historical practice on BSD and BSD-derived systems, copying file
       hierarchies as opposed to single files.  This functionality is used heavily in his-
       torical  applications,  and its loss would significantly decrease consensus. The -R
       option was added as a close synonym to the -r option, selected for consistency with
       all  other  options in this volume of IEEE Std 1003.1-2001 that do recursive direc-
       tory descent.

       When a failure occurs during the copying of a file hierarchy,  cp  is  required  to
       attempt to copy files that are on the same level in the hierarchy or above the file
       where the failure occurred.  It is unspecified if cp shall attempt  to  copy  files
       below the file where the failure occurred (which cannot succeed in any case).

       Permissions,  owners,  and  groups of created special file types have been deliber-
       ately left as implementation-defined. This is to allow systems to  satisfy  special
       requirements  (for example, allowing users to create character special devices, but
       requiring them to be owned by a certain group). In general,  it  is  strongly  sug-
       gested  that  the  permissions, owner, and group be the same as if the user had run
       the historical mknod, ln, or other utility to create the file. It is also  probable
       that additional privileges are required to create block, character, or other imple-
       mentation-defined special file types.

       Additionally, the -p option explicitly requires that all set-user-ID and set-group-
       ID permissions be discarded if any of the owner or group IDs cannot be set. This is
       to keep users from unintentionally giving away special privilege when copying  pro-
       grams.

       When  creating  regular files, historical versions of cp use the mode of the source
       file as modified by the file mode creation mask. Other choices would have  been  to
       use  the mode of the source file unmodified by the creation mask or to use the same
       mode as would be given to a new file created by the user (plus the  execution  bits
       of  the  source  file)  and  then  modify it by the file mode creation mask. In the
       absence of any strong reason to change historic practice,  it  was  in  large  part
       retained.

       When  creating  directories,  historical  versions of cp use the mode of the source
       directory, plus read, write, and search bits for the owner, as modified by the file
       mode  creation mask. This is done so that cp can copy trees where the user has read
       permission, but the owner does not. A side effect is that if the file creation mask
       denies  the  owner  permissions,  cp fails. Also, once the copy is done, historical
       versions of cp set the permissions on the created directory to be the same  as  the
       source directory, unmodified by the file creation mask.

       This behavior has been modified so that cp is always able to create the contents of
       the directory, regardless of the file creation mask. After the copy  is  done,  the
       permissions are set to be the same as the source directory, as modified by the file
       creation mask. This latter change from historical behavior is to prevent users from
       accidentally creating directories with permissions beyond those they would normally
       set and for consistency with the behavior of cp in creating files.

       It is not a requirement that cp detect attempts to copy a file to itself;  however,
       implementations  are  strongly encouraged to do so. Historical implementations have
       detected the attempt in most cases.

       There are two methods of copying subtrees in this volume  of  IEEE Std 1003.1-2001.
       The  other  method is described as part of the pax utility (see pax ). Both methods
       are historical practice. The cp utility provides a simpler, more  intuitive  inter-
       face,  while  pax  offers  a finer granularity of control. Each provides additional
       functionality to the other; in particular, pax maintains the hard-link structure of
       the  hierarchy,  while  cp does not. It is the intention of the standard developers
       that the results be similar (using appropriate option combinations in  both  utili-
       ties). The results are not required to be identical; there seemed insufficient gain
       to applications to balance the difficulty of implementations  having  to  guarantee
       that the results would be exactly identical.

       The  wording  allowing  cp to copy a directory to implementation-defined file types
       not specified by the System Interfaces volume of IEEE Std 1003.1-2001  is  provided
       so  that  implementations  supporting  symbolic  links are not required to prohibit
       copying directories to symbolic links. Other extensions to  the  System  Interfaces
       volume of IEEE Std 1003.1-2001 file types may need to use this loophole as well.

FUTURE DIRECTIONS
       The -r option may be removed; use -R instead.

SEE ALSO
       mv  ,  find  ,  ln  ,  pax  , the System Interfaces volume of IEEE Std 1003.1-2001,
       open(), unlink()

COPYRIGHT
       Portions of this text are reprinted and reproduced in electronic form from IEEE Std
       1003.1,  2003  Edition,  Standard  for Information Technology -- Portable Operating
       System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C)
       2001-2003  by  the  Institute  of Electrical and Electronics Engineers, Inc and The
       Open Group. In the event of any discrepancy between this version and  the  original
       IEEE  and The Open Group Standard, the original IEEE and The Open Group Standard is
       the  referee  document.  The  original  Standard  can   be   obtained   online   at
       http://www.opengroup.org/unix/online.html .



POSIX                                2003                                CP(P)

Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache/1.3.41 (Unix) PHP/5.2.5 mod_perl/1.30 mod_gzip/1.3.26.1a
Under GNU General Public License
2009-01-08 06:12 @38.103.63.58 CrawledBy CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
Valid XHTML 1.0!Valid CSS!