OS X에서 파일을 복사 할 때 타임 스탬프를 유지할 수 있습니까? 있습니다. 과거 OSX에서

각 파일을 외부 하드 드라이브에있는 디자인의 단일 폴더 계층 구조로 복사하여 세 개의 Mac 파일을 결합하는 데 관심이 있습니다.

과거 OSX에서 파일을 복사 한 경험 에서 파일의 생성 및 수정 타임 스탬프가 손실되는 경우 가 있습니다. 즉, 파일 복사가 발생하는 현재 시점으로 변경됩니다.

이런 일이 일어나지 않도록하려면 어떻게해야합니까?



답변

방금이 문제를 직접 겪었고 내장 cp명령이 실제로 처리합니다.

사진을 수확하고 싶었던 오래된 CF 카드를 발견했습니다. 내 처리 스크립트는 mtime 파일을보고 올바른 위치에 파일을 저장하므로 보존해야합니다.

로부터 man 페이지 :

 -p    Cause cp to preserve the following attributes of each source file in the copy: modification time,
       access time, file flags, file mode, user ID, and group ID, as allowed by permissions.  Access
       Control Lists (ACLs) and Extended Attributes (EAs), including resource forks, will also be pre-
       served.

       If the user ID and group ID cannot be preserved, no error message is displayed and the exit value
       is not altered.

       If the source file has its set-user-ID bit on and the user ID cannot be preserved, the set-user-
       ID bit is not preserved in the copy's permissions.  If the source file has its set-group-ID bit
       on and the group ID cannot be preserved, the set-group-ID bit is not preserved in the copy's per-
       missions.  If the source file has both its set-user-ID and set-group-ID bits on, and either the
       user ID or group ID cannot be preserved, neither the set-user-ID nor set-group-ID bits are pre-
       served in the copy's permissions.

따라서, zsh나는 ( NO NAME내 카드 볼륨 이름) 을 실행할 수있었습니다 .

cp -rvp /Volumes/NO\ NAME/DCIM/**/*.{JPG,jpg} ~/Desktop/tmp/pics

나는 특별한 /**/*구조가 ZSH에만 해당된다고 믿는다 . 그러나 당신은 같은 것을 할 수 있습니다

find /Volumes/WHATEVER -type d -print0 | xargs cp -vp {}/*.JPG /my/out/path

답변

rsync 를 사용 하여 이러한 종류의 복사를 수행합니다. 그러나 Apple에서 제공하는 버전은 2.6.9이며 여기에 버그가 있습니다. 따라서 타사를 직접 구축하거나 패키지 관리자를 통해 구축해야합니다.

예를 들어

rsync -aE source_dir target_dir

이 옵션 -E은 ACL을 복사하고 -a유닉스 권한과 시간을 유지합니다. (물론 rsync 2에서 수행되었습니다. rsync 3에는 -AX가 필요합니다)

rsync 드라이브를 마운트하지 않고 원격 시스템에 복사하도록 설정할 수도 있습니다.

rsync에 대한 GUI 프론트 엔드가 있습니다 (예 : aRsync) . 다른 디렉토리 동기화 도구에 대해서는이 질문을 참조하십시오 .


답변

사용하십시오 pax. ustarpax 라고 하는 기본 형식은 파일 수정 및 액세스 시간을 유지합니다 (사용자 ID, 그룹 ID, 파일 모드 비트 및 스포트라이트 주석 및 ACL과 같은 확장 속성 등). 자세한 내용은 여기 맨 페이지 를 참조하십시오.pax

먼저 pax모든 Mac 에서 아카이브를 생성하고 다음과 같이 외장 하드 드라이브에 복사하십시오.

  1. 응용 프로그램> 유틸리티> 터미널을 엽니 다.
  2. 터미널 타입 :

    $ cd
    

    Mac에서 결합 할 파일이있는 폴더를 터미널로 드래그합니다.

    또는 전체 폴더 이름을 입력 할 수 있습니다.

    $ cd /path/to/your\ folder
    

    현재 폴더가 ‘your folder’로 변경됩니다.

  3. 다음을 사용하여 폴더를 보관하십시오 pax.

    $ cd ..
    $ pax -w "your folder" > yourfolder.ustar
    
  4. Finder를 사용하여 새로 생성 된 아카이브 yourfolder.ustar를 외장 하드 드라이브 에 복사하십시오 .

그런 다음 다음을 사용하여 아카이브를 추출하십시오 pax.

  1. 외부 USB 하드 드라이브가 연결된 Mac에서 터미널을 엽니 다.

  2. cd위에서 설명한대로 명령 을 사용 하여 현재 폴더를 외장 하드 드라이브의 단일 폴더 계층 구조로 변경하십시오 .

    $ cd /Volumes/externalHDD/path/to/single \folder
    $ ls
    yourfolder.ustar
    yourfolder2.ustar
    yourfolder3.ustar
    
  3. 아카이브를 추출하십시오.

    $ pax -r -p e < yourfolder.ustar
    $ pax -r -p e < yourfolder2.ustar
    $ pax -r -p e < yourfolder3.ustar
    $ ls
    your folder
    your folder 2
    your folder 3
    
  4. 필요한 경우 Finder로 파일을 이동하십시오 (Finder는 동일한 볼륨 내에서 파일 수정 및 액세스 시간을 유지합니다).

(OS X 10.8 (Mountain Lion)에서이 절차를 테스트했습니다.)


답변

압축으로 압축하거나 ctrl- 클릭 또는 오른쪽 클릭으로 압축을 선택하십시오. 압축 파일을 대상 시스템에 복사 한 다음 파일을여십시오.

가능하면 외장 드라이브를 FAT가 아닌 Mac OS 파일 시스템으로 포맷하십시오.