Moving folders with content

Discussion in 'Python' started by Guest, Sep 15, 2012.

  1. Guest

    Guest Guest

    Hello,

    I am working in both OS X Snow Leopard and Lion (10.6.8 and 10.7.4).
    I'm simply wanting to move folders (with their content) from various
    servers to the hard drive and then back to different directories on the
    servers.

    I want to be careful not to remove any metadata or resource forks from
    the files in the directories. I did a bit of researching on shutil, and
    looks like it is similar to using "cp -p" and copystat(), which I believe
    will keep the resource fork, etc.

    Here's the code I came up with. I'm curious if anyone finds fault with
    this, or if there's a better way to do this?

    Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
    [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    >>> import os
    >>> import shutil
    >>>
    >>> p1 = os.path.expanduser('~/Desktop/IN/Test/')
    >>> p2 = os.path.expanduser('~/Desktop/OUT/Test/')
    >>>
    >>> if os.path.exists(p2): shutil.rmtree(p2)

    ....
    >>> shutil.copytree(p1, p2)
    >>> shutil.rmtree(p1)
    >>>


    Thanks!

    Jay
     
    Guest, Sep 15, 2012
    #1
    1. Advertising

  2. Guest

    Nobody Guest

    On Sat, 15 Sep 2012 04:36:00 +0000, jyoung79 wrote:

    > I am working in both OS X Snow Leopard and Lion (10.6.8 and 10.7.4).
    > I'm simply wanting to move folders (with their content) from various
    > servers to the hard drive and then back to different directories on the
    > servers.
    >
    > I want to be careful not to remove any metadata or resource forks from
    > the files in the directories. I did a bit of researching on shutil, and
    > looks like it is similar to using "cp -p" and copystat(), which I believe
    > will keep the resource fork, etc.


    I don't think so. The shutil documentation says:

    Warning

    Even the higher-level file copying functions (copy(), copy2()) can’t
    copy all file metadata.

    On POSIX platforms, this means that file owner and group are lost as well
    as ACLs. On Mac OS, the resource fork and other metadata are not used.
    This means that resources will be lost and file type and creator codes
    will not be correct. On Windows, file owners, ACLs and alternate data
    streams are not copied.

    The macostools module has functions which can copy the resource fork, but
    they aren't available in 64-bit builds and have been removed in Python 3.0.
     
    Nobody, Sep 15, 2012
    #2
    1. Advertising

  3. Guest

    Hans Mulder Guest

    On 15/09/12 10:00:16, Nobody wrote:
    > On Sat, 15 Sep 2012 04:36:00 +0000, jyoung79 wrote:
    >
    >> I am working in both OS X Snow Leopard and Lion (10.6.8 and 10.7.4).
    >> I'm simply wanting to move folders (with their content) from various
    >> servers to the hard drive and then back to different directories on the
    >> servers.
    >>
    >> I want to be careful not to remove any metadata or resource forks from
    >> the files in the directories. I did a bit of researching on shutil, and
    >> looks like it is similar to using "cp -p" and copystat(), which I believe
    >> will keep the resource fork, etc.

    >
    > I don't think so. The shutil documentation says:
    >
    > Warning
    >
    > Even the higher-level file copying functions (copy(), copy2()) can’t
    > copy all file metadata.
    >
    > On POSIX platforms, this means that file owner and group are lost as well
    > as ACLs. On Mac OS, the resource fork and other metadata are not used.
    > This means that resources will be lost and file type and creator codes
    > will not be correct. On Windows, file owners, ACLs and alternate data
    > streams are not copied.
    >
    > The macostools module has functions which can copy the resource fork, but
    > they aren't available in 64-bit builds and have been removed in Python 3.0.


    You may want to use the subprocess module to run 'ditto'. If
    the destination folder does not exist, then ditto will copy MacOS
    specific aspects such as resource forks, ACLs and HFS meta-data.

    If the destination already exists, then ditto will copy file
    contents, but not modify mode, ownership or ACLs of existing
    folders inside the destination folder.

    See the manual page for details.


    Hope this helps,

    -- HansM
     
    Hans Mulder, Sep 15, 2012
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. linkswanted
    Replies:
    0
    Views:
    947
    linkswanted
    Dec 21, 2007
  2. linkswanted
    Replies:
    0
    Views:
    1,579
    linkswanted
    Jan 6, 2008
  3. linkswanted
    Replies:
    0
    Views:
    454
    linkswanted
    Jan 23, 2008
  4. Guest
    Replies:
    4
    Views:
    226
    Dennis Lee Bieber
    Sep 16, 2012
  5. Laszlo Nagy

    Re: Moving folders with content

    Laszlo Nagy, Sep 15, 2012, in forum: Python
    Replies:
    0
    Views:
    128
    Laszlo Nagy
    Sep 15, 2012
Loading...

Share This Page