bash에서 두 개의 로컬 폴더 동기화


23

홈 디렉토리에 큰 폴더 "X"가 있고 플래시 드라이브에 오래된 사본이 있습니다. Y. rm Y; cp X Y기존 파일을 덮어 쓰지 않고 아날로그 란 무엇입니까 ?

답변:


26

이전 답변에서 언급 한 것보다 rsync 할 속성이 더 많습니다 . 당신은 그들 자신을 조사해야합니다 :

man rsync

그러나 귀하의 문제에 대해서는 다음과 같이 제안합니다.

rsync -a --delete X Y

이런 식으로 수신자 (Y)는 X에없는 파일을 삭제합니다. 그래도 제대로 수행해야합니다. 루트가 시스템을 쉽게 죽일 수 있으므로 잘못 사용되었습니다 ... :)


1
이 점에 매우주의해야합니다. 명령에 --dry-run을 추가하여 실제로 변경하지 않고 어떻게되는지 확인하십시오. 제대로 작동한다면 --dry-run
squarecandy

도달하는 데 약간의 시간이 걸렸습니다 rsync -a --delete X/ Y. X 이후의 작은 슬래시로 인해 의도 한대로 작동하므로 다른 도움이 될 수도 있습니다. 여기에 설명 : abbeyworkshop.com/howto/unix/nix_rsync/index.html
Shovalt

15

rsync (1)을 살펴보십시오 . 그것은 당신이 원하는 것을 거의 정확하게하기위한 것입니다.

rsync -av X Y

자체 프로토콜 또는 ssh를 통한 원격 복사를 지원하지만 로컬에서도 사용할 수 있습니다.

원하는 정확한 동작에 따라 --update옵션 을 전달할 수도 있습니다 . 이것은 rsync에게 타겟에 이미 존재하고 소스에있는 파일보다 새로운 파일을 덮어 쓰지 않도록 지시합니다.

추가 파일 (예 : Y에는 있지만 X에는없는 파일)을 제거하려는 경우 --delete옵션을 추가 할 수 있습니다 .


그러나 X에서 제거 된 것보다 파일을 제거하지는 않습니다 rm Y; cp X Y.

X에서 제거 된 파일을 제거하려면 --delete 옵션을 사용하십시오.
csonuryilmaz

0

다음 명령과 함께 rsnyc를 사용해보십시오.

rsync -avzu /home/x /y

-u = 파일이 수정 된 경우 대상에서 파일을 덮어 쓰지 마십시오.


그러나 X에서 제거 된 것보다 파일을 제거하지는 않습니다 rm Y; cp X Y.

0

옵션 -u (업데이트)에서 찾고있는 기능 중 일부가 실제로이 옵션에 있다고 생각합니다.

"--ignore-existing"-수신자에 존재하는 파일 업데이트를 건너 뜁니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.