
최신 작업에 따라 항상 내 노트북의 폴더 Y와 같아야 하고 그 반대의 경우도 마찬가지인 X라는 폴더가 있는 USB 플래시 드라이브가 있습니다. 예를 들어, Y 폴더에서 항목을 삭제하면 X 폴더에서도 삭제되어야 하며(플래시 드라이브를 연결하자마자) 그 반대의 경우도 마찬가지입니다. X에 폴더나 파일을 추가하면 플래시 드라이브를 연결하자마자 Y에도 추가되어야 합니다.
이제 robocopy를 사용하여 짧은 배치 스크립트를 만들었습니다.
@echo off
robocopy "D:\AC ActiveZone Mobile" "C:\AC ActiveZone" /MIR
PAUSE
ActiveZone Mobile 폴더는 폴더 X이고 ActiveZone은 폴더 Y입니다. 문제는 이것이 양방향 동기화가 아닌 것 같다는 것입니다. 나는 다음을 증명할 것이다:
1.) 폴더와 해당 하위 폴더 및 파일이 모두 동일합니다. 2.) 폴더 X에 새 파일 T1을 생성했습니다. 3.) 폴더 Y에 새 파일 T2를 생성했습니다. 4.) 스크립트를 실행했습니다.
결과: 폴더 X와 Y 모두에 T1과 T2가 있는 대신 이제 폴더 X와 Y 모두에 T1만 있습니다.
또한 (위의 첫 번째 테스트 후) 폴더 Y에서 T1을 삭제하고 스크립트를 실행하면 폴더 Y에 새 T1만 표시됩니다. 그러나 Y에서 T1의 삭제 작업은 폴더 Y에서 T1을 생성한 것보다 오래되지 않았지만 최신입니다. X. T1이 X에서 Y로 복사되는 대신 T1도 X에서 삭제되기를 원합니다.
배치 스크립트를 사용하여 이 작업을 수행하는 방법은 무엇입니까?
답변1
음, 쉬워요. 이전 파일을 제외하고 두 가지 방법으로 실행하십시오.
@ECHO OFF
ECHO Two way mirror between %1 and %2, continue?
PAUSE
robocopy %2 %1 /E /DST /FFT /XO /XJ
robocopy %1 %2 /E /DST /FFT /XO /XJ
파일이 두 위치 모두에 존재하는 경우 최신 복사본을 보존해야 합니다. NTFS/FAT32 타임스탬프 차이로 인해 잘못된 잘못된 비교가 발생하는 경우가 많기 때문에 /DST 및 /FFT를 사용합니다. 또한 개인적으로 Thumbs.db, Desktop.ini 등도 제외합니다.
존재하지 않는 파일을 삭제하려면 어느 것이 "마스터" 위치인지 결정하고 이를 두 번째 줄에 배치하고 대신 /E를 /MIR로 변경해야 합니다. 나는 robocopy가 할 수 있는 것 이상의 어떤 종류의 추적 없이는 단순히 다른 파일이 없는 것과는 반대로 파일이 하나 또는 다른 것에서 삭제되었는지 아는 것이 불가능하다고 생각합니다.