diff options
-rw-r--r-- | Doc/library/shutil.rst | 2 | ||||
-rw-r--r-- | Lib/shutil.py | 16 |
2 files changed, 12 insertions, 6 deletions
diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index 6b4ce14..7a596ee 100644 --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -177,7 +177,7 @@ Directory and files operations .. function:: copy2(src, dst, *, follow_symlinks=True) Identical to :func:`~shutil.copy` except that :func:`copy2` - also attempts to preserve all file metadata. + also attempts to preserve file metadata. When *follow_symlinks* is false, and *src* is a symbolic link, :func:`copy2` attempts to copy all metadata from the diff --git a/Lib/shutil.py b/Lib/shutil.py index a4aa0df..40dd070 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -312,11 +312,15 @@ else: pass def copystat(src, dst, *, follow_symlinks=True): - """Copy all stat info (mode bits, atime, mtime, flags) from src to dst. + """Copy file metadata - If the optional flag `follow_symlinks` is not set, symlinks aren't followed if and - only if both `src` and `dst` are symlinks. + Copy the permission bits, last access time, last modification time, and + flags from `src` to `dst`. On Linux, copystat() also copies the "extended + attributes" where possible. The file contents, owner, and group are + unaffected. `src` and `dst` are path names given as strings. + If the optional flag `follow_symlinks` is not set, symlinks aren't + followed if and only if both `src` and `dst` are symlinks. """ def _nop(*args, ns=None, follow_symlinks=None): pass @@ -384,8 +388,10 @@ def copy(src, dst, *, follow_symlinks=True): return dst def copy2(src, dst, *, follow_symlinks=True): - """Copy data and all stat info ("cp -p src dst"). Return the file's - destination. + """Copy data and metadata. Return the file's destination. + + Metadata is copied with copystat(). Please see the copystat function + for more information. The destination may be a directory. |