답변:
방금이 문제를 직접 겪었고 내장 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
cp -p
하며 수정 된 시간 (파일에서 세 개의 타임 스탬프 중 가장 유용한 것)을 유지하며 중간 아카이브 파일을 만들 필요가 없습니다.
cp -p
HFS +에서 FAT32로 복사 할 때는 작동하지 않습니다.
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
(아래 답변 참조).
man rsync
검색 preserve times
:) ⇒ Mark의 답변이 정확합니다.
-t
. 버그는 아마도 Mavericks와 Yosemite에도있을 것입니다.
사용하십시오 pax
. ustarpax
라고 하는 기본 형식은 파일 수정 및 액세스 시간을 유지합니다 (사용자 ID, 그룹 ID, 파일 모드 비트 및 스포트라이트 주석 및 ACL과 같은 확장 속성 등). 자세한 내용은 여기 맨 페이지 를 참조하십시오.pax
먼저 pax
모든 Mac 에서 아카이브를 생성하고 다음과 같이 외장 하드 드라이브에 복사하십시오.
터미널 타입 :
$ cd
Mac에서 결합 할 파일이있는 폴더를 터미널로 드래그합니다.
또는 전체 폴더 이름을 입력 할 수 있습니다.
$ cd /path/to/your\ folder
현재 폴더가 'your folder'로 변경됩니다.
다음을 사용하여 폴더를 보관하십시오 pax
.
$ cd ..
$ pax -w "your folder" > yourfolder.ustar
Finder를 사용하여 새로 생성 된 아카이브 yourfolder.ustar
를 외장 하드 드라이브 에 복사하십시오 .
그런 다음 다음을 사용하여 아카이브를 추출하십시오 pax
.
외부 USB 하드 드라이브가 연결된 Mac에서 터미널을 엽니 다.
cd
위에서 설명한대로 명령 을 사용 하여 현재 폴더를 외장 하드 드라이브의 단일 폴더 계층 구조로 변경하십시오 .
$ cd /Volumes/externalHDD/path/to/single \folder
$ ls
yourfolder.ustar
yourfolder2.ustar
yourfolder3.ustar
아카이브를 추출하십시오.
$ 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
필요한 경우 Finder로 파일을 이동하십시오 (Finder는 동일한 볼륨 내에서 파일 수정 및 액세스 시간을 유지합니다).
(OS X 10.8 (Mountain Lion)에서이 절차를 테스트했습니다.)
압축으로 압축하거나 ctrl- 클릭 또는 오른쪽 클릭으로 압축을 선택하십시오. 압축 파일을 대상 시스템에 복사 한 다음 파일을여십시오.
가능하면 외장 드라이브를 FAT가 아닌 Mac OS 파일 시스템으로 포맷하십시오.