폴더의 변경 사항을 다른 폴더에 자동으로 적용하는 방법은 무엇입니까?

폴더의 변경 사항을 다른 폴더에 자동으로 적용하는 방법은 무엇입니까?

내 작업 소프트웨어인 Ubuntu 12.04를 실행 중입니다."생산"어떤 폴더에 그런 다음 일반적으로 내가 만든 파일을 다음을 수행하는 다른 경로에 복사합니다."배포".

예를 들어, 때로는 일부 파일을 생성 /home/user/develop하고 해당 파일에도 액세스할 수 있기를 원합니다 /media/ntfs. 또한 예를 들어 직장에 있는데 웹 콘텐츠를 테스트하고 있다면 /home/user/develop그 작업을 진행하고 싶습니다./var/www

따라서 마지막으로 생성된 폴더나 특정 파일 목록을 복사해야 합니다.

처음에는 심볼릭 링크에 관한 것이라고 생각했지만 그것이 최선의 접근 방식은 아니라고 생각합니다. 스크립트?

답변1

rsync디렉터리와 다른 서버 간에 콘텐츠를 동기화합니다. 포함/제외 지원 등이 있습니다. 콘텐츠가 실제로 동기화되기를 원하는 경우자동으로, 그런 다음 원하는 매개변수를 사용하여 rsync를 실행할 수 있습니다.

명령과 해당 매개변수를 모두 스크립트에 넣을 수 있습니다.

지정된 간격으로 스크립트를 복제하려면 예약된 작업에서 스크립트를 실행하거나 동기화가 필요할 때 스크립트를 수동으로 실행할 수 있습니다. 마지막으로 관련 디렉터리에서 파일 시스템 이벤트를 수신할 수 있습니다 inotify. 디렉토리에서 특정 변경 사항이 발생할 때 rsync를 실행합니다.

inotify에서 while 루프 차단을 사용하거나 다음과 같이 이를 수행하도록 설계된 특수 프로그램/스크립트를 사용하여 이를 수행할 수 있습니다.

rsync-inotify:http://code.google.com/p/rsync-inotify/

동기화:http://code.google.com/p/lsyncd/

등...

답변2

다음 명령을 사용하여 디렉터리를 다른 디렉터리로 복사할 수 있습니다.동기화. Rsync는 이미 대상 디렉터리에 있는 동일한 콘텐츠(또는 더 정확하게는 동일한 날짜 및 크기)를 가진 파일을 복사하지 않습니다.

rsync -a /home/user/develop/ /var/www/

라이브 서버를 실시간으로 업데이트하는 것은 좋은 생각이 아닙니다. 변경 작업을 수행하고 파일이 작동 상태가 아닌 경우 해당 파일을 배포하고 싶지 않습니다. rsync 전파도 즉각적이지 않으므로 일부 새 파일이 위치하는 동안 작은 창이 있지만 일부 이전 파일은 남아 있습니다.


버전 관리이 문제를 해결하고 다른 방법으로도 도움을 드릴 것입니다. 변경사항을 적용한 경우 커밋하세요. 라이브 서버에서 업데이트를 수행합니다(또는 버전 제어 소프트웨어에서 부르는 모든 것을 가져오거나). 버전 관리를 통해 변경 내역을 유지하고 여러 시스템의 변경 사항을 추적할 수 있습니다.

관련 정보