디렉터리 구조를 유지하면서 디렉터리의 모든 파일을 백업 하드 드라이브에 복사해야 합니다. 이것이 가능한가:
find . -name '*.*' -exec cp --parents \{\} /target \;
그런 다음 백업 하드 드라이브를 새 컴퓨터에 복사하고 싶지만 파일이 대상 위치에 이미 존재하는 경우 복사하고 싶지 않고 건너뛰기만 하면 됩니다.
이를 수행하는 가장 좋은 방법은 무엇입니까?
답변1
find
a 와 조합이 필요하지 않습니다 cp
. 나는 rsync
이런 작업에 그것을 사용할 것입니다 .
"모든 것"을 복사하고 권한과 소유권을 유지하려면(그리고 복사할 필요가 없는 콘텐츠를 건너뛰려면) "Try Run" 등을 사용하세요.
sudo rsync -Havn sourcedir/ targetdir/
괜찮아 보이면 삭제 n
하고 실제 복사본을 만드세요.
sudo rsync -Hav sourcedir/ targetdir/
후행 슬래시는 sourcedir/
중요하며 에 설명되어 있습니다 man rsync
.
하드 링크가 없는 경우 건너뛸 수 있으며 H
검색 프로세스가 더 빨라집니다.
rsync
권한 및 소유권에 문제 가 없으면 sudo
.
답변2
cp에 대한 매뉴얼 페이지를 확인하십시오. 그러나 -n 플래그가 트릭을 수행해야 합니다.
find . -name '.' -exec cp -n --parents {} /target ;
-n 기존 파일을 덮어쓰지 않습니다.
하지만 시스템을 확인하고 테스트해 보세요.
cp에서는 수정 시간과 액세스 시간을 보존하기 위해 -p 플래그를 추가하는 것을 고려할 수 있지만 권한, ACL, 소유자 등 보존하고 싶지 않은 다른 많은 파일 시스템 정보도 보존됩니다.
그냥 {} 대신 '{}'를 쓰고 ;로 지시문을 닫습니다.
find . -name '*.*' -exec cp -n --parents '{}' /target \;