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


14

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

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

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


타임 스탬프를 언제 잃습니까?
lhf

어떻게 복사합니까?
Gerry

답변:


11

방금이 문제를 직접 겪었고 내장 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

+1 단순하고 간단 cp -p하며 수정 된 시간 (파일에서 세 개의 타임 스탬프 중 가장 유용한 것)을 유지하며 중간 아카이브 파일을 만들 필요가 없습니다.
wberry

1
내가 아는 한 "cp -p"는 생성 날짜를 잊어 버리고 대신 modif 날짜로 설정합니다. 꽤 터무니없는 행동입니다.
Nicolas Barbulesco

1
cp -pHFS +에서 FAT32로 복사 할 때는 작동하지 않습니다.
NobleUplift

9

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

예를 들어

rsync -aE source_dir target_dir

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

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

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


rsync좋은 솔루션이지만 액세스 시간을 보존하지는 않습니다. pax(아래 답변 참조).
jaume

1
내가 아는 한 "rsync"는 생성 날짜를 잊어 버리고 대신 modif 날짜로 설정합니다. 큰 실패입니다.
Nicolas Barbulesco

→ jaume : "file b"에 대해 "file a"를 어떤 형태로든 만드는 명령은 먼저 "file a"를 읽어야합니다. 따라서 "파일 a"의 액세스 시간을 수정해야합니다. 이것은 명령 수준의 기능이 아니라 커널 수준의 기능입니다. 다른 시스템 호출을 통해 명령이 액세스 시간을 이전 상태로 복원하는 경우 이는 평범한 거짓말 이므로 위험한 트릭 입니다.
dan

→ 니콜라스 : cf. man rsync검색 preserve times:) ⇒ Mark의 답변이 정확합니다.
dan

1
→ Mark, @daniel-방금 Mac OS X 10.6.8에서 rsync를 테스트했습니다. "rsync -rt"가있는 폴더의 로컬 사본은 파일 작성 날짜를 잊어 버리고 수정 날짜로 대체합니다. "rsync"에 대한 매뉴얼에도 불구하고 옵션에 대해 "preserve times"를 말합니다 -t. 버그는 아마도 Mavericks와 Yosemite에도있을 것입니다.
Nicolas Barbulesco

4

사용하십시오 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)에서이 절차를 테스트했습니다.)


1
더 이상 다음 파일 이름 나던 작품 200 자 community.hpe.com/t5/Ignite-UX/...
amleszk

0

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

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


Option- 클릭하지 않습니다. Ctrl 키를 누른 채 클릭하십시오. 또는 마우스 오른쪽 버튼을 클릭하십시오.
Nicolas Barbulesco

1
디스크 포맷에 가장 적합한 선택은 Mac OS Extended Journalled입니다. Mac OS Extended는 HFS +라고도합니다.
Nicolas Barbulesco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.