변경 시 모든 파일 변경 사항을 한 폴더에서 다른 폴더로 지속적으로 복사(Windows)

변경 시 모든 파일 변경 사항을 한 폴더에서 다른 폴더로 지속적으로 복사(Windows)

나는 중앙 집중식 버전 제어 하에 유지되는 대규모 Java 웹 애플리케이션을 작업 중이지만 소스 파일은 실제 서버를 구축하고 실행하는 데 사용됩니다. 그런 다음 작업하는 모든 파일을 실행 중에 임의의 임시 디렉토리에 복사합니다.

내 문제는 이 거대한 애플리케이션을 다시 빌드하여 내 파일의 변경 사항을 확인하거나 모든 변경 사항을 추적하고 변경한 파일을 소스 제어에 다시 커밋하기 전에 소스 위치로 다시 복사해야 한다는 것입니다.

제 질문은: 소스 폴더의 변경 사항을 모니터링하고 변경된 파일을 임시 폴더 X에 자동으로 복사하는 명령줄 스크립트가 있습니까?

아이디어는 두 위치 문제를 수동으로 완화해야 하는 인간의 실패 지점을 제거하는 것입니다.

답변1

나는 제안한다FreeFileSync, 몇 초마다 두 폴더를 자동으로 동기화하는 스크립트를 생성하는 기능이 있는 것으로 보입니다. 개인적으로 가지고 놀지는 않았지만 유망해 보입니다.

여기에 이미지 설명을 입력하세요 여기에 이미지 설명을 입력하세요

답변2

RoboCopy 사용을 고려해 보셨나요?http://ss64.com/nt/robocopy.html

RoboCopy는 일정 기간이 경과하거나 데이터 세트에 여러 가지 변경 사항이 발생한 후 데이터를 복사하도록 설정할 수 있습니다.

/MON:n : 모니터 소스; n개 이상의 변경 사항이 나타나면 다시 실행하세요.
/MOT:m : 모니터 소스; 변경된 경우 m분 후에 다시 실행합니다.

답변3

(노화)를 살펴보고 싶을 수도 있습니다.델타복사클라이언트와 서버. 기본적으로 리눅스와 유사하다.재동기화Windows용 구현, 스크립트 가능(원하는 경우 Windows 스케줄러 사용) 및 주요 장점은 다음과 같습니다.변경된 부분만수정된 파일(예, 파일!)이 전송됩니다. 이는 대규모 프로젝트에서 많은 트래픽을 절약할 수 있습니다. 물론, 먼저 파일 목록을 구축하고 전송해야 한다는 단점이 있습니다.

또한 몇 가지 (작은) 주의 사항이 있습니다.

  • 오래된 소프트웨어이므로 교체해야 할 수도 있습니다.cygwin1.dllWindows 컴퓨터에서. (Linux와 Windows 간에 파일을 동기화하는 경우에만 해당됩니다.시그윈당시 16비트 유니코드/UTF-8 파일 이름 변환을 올바르게 처리하지 못한 기본 프레임워크였습니다.)
  • 그다지 사용자 친화적이지는 않습니다. Linux를 살펴봐야 합니다.rsync 맨페이지잠재력을 최대한 활용하는 것입니다.
  • Windows에서는 »클라이언트«와 »서버» 시스템이 필요합니다.
  • 서버가 Linux 시스템인 경우 다음을 설정해야 합니다.rsyncd바르게.
  • Windows의 볼륨 섀도 복사본은 지원되지 않습니다(단, 필요하지 않을 수도 있음).

글쎄요, 장점도 있습니다(그래서 제가 아직도 매일 사용하고 있습니다).

  • *NIX rsync 및 rsyncd와 완벽하게 호환됩니다. 입증되고 잘 알려져 있으며 매우 효율적인 동기화 시스템입니다. 아직.
  • 오버헤드를 작게 유지합니다. 변경된 데이터(파일 내부도 포함)만 네트워크를 통해 전송됩니다. 따라서 재택근무를 하거나 느린 연결을 통해 서버에 연결하는 경우에도 매우 좋습니다.
  • 안전 장치인 것 같습니다. 나는 수년에 걸쳐 수많은 기가바이트의 데이터를 rsync해 왔으며 대상 파일을 "패치"할 때 단 하나의 결함도 발생하지 않았습니다. 처음에는 그 개념이 조금 걱정스럽기도 했습니다.
  • 저는 여전히 DeltyCopy를 사용하여 Windows 시스템의 파일을 매일 중앙 Linux 서버와 Windows 2003 서버에 백업합니다. 올바르게 설치하면 매우 잘 작동하고 안전합니다.

글쎄, 당신에게 달렸습니다. 재미있게 보내세요! (그리고 FreeFileSync에 대해 알려주세요!)

답변4

유용한 명령은 입니다 xcopy /m src\* dest. 그러면 src의 모든 파일이 dest로 복사되고클리어하다모든 src 파일의 아카이브 비트. src 파일을 터치할 때마다 Windows는 자동으로 보관 비트를 설정합니다. 다음에 실행하면 xcopy /m변경된 파일만 복사됩니다.

지속적으로 실행하려면 다음과 같은 작은 스크립트를 작성하십시오.

@echo off
echo Watching for changes to %1 ...
:top
xcopy /m /y %1\* %2 | find /v "File(s) copied"
timeout /t 2 >nul
goto :top

관련 정보