하드 링크를 재귀 적으로 보존하여 디렉토리 트리를 파일에 복사하려고합니다. gnu cp를 사용하면 -l 플래그와 함께 작동합니다. 그러면 cp는 디렉토리 구조를 다시 만들지 만 각 파일의 내용을 복사 할 필요는 없습니다.
이것은 백업의 예비 단계입니다. 먼저 이전 백업의 저렴한 (하드 링크 된) 사본을 만든 다음이 사본에서 소스 디렉토리를 rsync하고 싶습니다. 대충:
cp -r -l yesterdays_backup todays_backup
rsync -a source_dir todays_backup
불행히도 OSX의 cp는 -l 플래그를 지원하지 않습니다. cpio는 재귀 복사를 지원하지 않습니다. 다른 대안은 pax이지만 전체 디렉토리 구조가 복사됩니다.
pax -rw backups/yesterdays_backup backups/todays_backup
변형 :
yesterdays_backup
|
\source_dir (...)
에:
todays_backup
|
\backups
\yesterdays_backup
\source_dir(...)
이 작업을 수행하는 쉬운 / 분명한 방법이 있어야하지만, 나는 현재 혼란에 빠졌습니다 … cpio와 pax에 대한 대안이 있습니까? gnu cp를 설치하지 않아도됩니다.
Timemachine을 알고 있지만 암호화 된 디렉토리를 증분 백업하는 것은 적절하지 않습니다.
답변
MacPorts에서 cp를 설치하는 것은 쉽지만, 휴대용 스크립트를 원하지 않거나 만들려는 경우 세 가지 옵션이 있습니다.
rsync
rsync --archive --link-dest=../yesterdays_backup backups/yesterdays_backup\
backups/todays_backup
cpio
mkdir backups/todays_backup
cd backups/yesterdays_backup
find . -print | cpio -p -al ../todays_backup
팍스
mkdir backups/todays_backup
cd backups/yesterdays_backup
pax -rwl . ../todays_backup
답변
이름이 변경된 GNU 명령 이 포함 coreutils
된 MacPorts 에서 패키지를 쉽게 설치할 cp
수 gcp
있습니다.
그러나 OS X 10.5 버전을 포함하여 최신 버전의 rsync는 더 나은 –link-dest 옵션을 지원하므로 초기 cp -al이 필요하지 않습니다. 여기를 참조 하십시오 . 확장 된 속성, ACL 등을 복사하려면 -E 옵션도 사용하는 것이 좋습니다.
답변
하지만 cpio
직접 재귀 복사를 지원하지 않습니다, 당신은 당신이 표준 입력에 복사 할 파일의 정확한 목록을 공급하고, 사용 재귀 사본의 효과를 얻을 수 있습니다 find
에 파이프를 cpio
. 이것은 tar
옵션과 함께 GNU를 사용하는 것과 직접적으로 유사합니다 -T -
(즉, 표준 입력에서 백업 할 파일 목록을 읽습니다).
답변
나는 당신이 원하는 것을 달성 할 수 있다고 생각합니다 ditto yesterdays_backup todays_backup
. 기본적으로 ditto
하드 링크, ACL 및 확장 된 속성을 유지하는 재귀 복사본을 수행합니다.
답변
폴의 답변 +1 ditto 는 옵션이지만 find와 함께 사용하는 경우에만 가능합니다. 하드 링크는 유지하지만 디렉토리 내부에서만 유지됩니다.