[linux] rsync가 .htaccess 파일을 동기화하지 않음
server1의 디렉토리 A를 server2의 디렉토리 B와 rsync하려고합니다.
server1의 A 디렉토리에 앉아 다음 명령을 실행했습니다.
rsync -av * server2::sharename/B
하지만 흥미로운 점은 .htaccess 또는 디렉토리 A의 숨겨진 파일을 제외한 모든 파일과 디렉토리를 동기화한다는 것입니다. 하위 디렉토리 내의 숨겨진 파일은 동기화됩니다.
또한 다음 명령을 시도했습니다.
rsync -av --include=".htaccess" * server2::sharename/B
그러나 결과는 동일합니다.
A 디렉토리의 숨겨진 파일이 동기화되지 않는 이유와 해결 방법에 대한 아이디어. 루트 사용자로 실행 중입니다.
감사
답변
이는 *
이름이 점으로 시작하는 파일을 제외하고 기본적으로 현재 작업 디렉토리의 모든 파일로 확장 된다는 사실 때문입니다 . 따라서 rsync
이러한 파일을 인수로 수신하지 마십시오.
.
현재 작업 디렉토리 표시 를 다음으로 전달할 수 있습니다 rsync
.
rsync -av . server2::sharename/B
이렇게하면 확장 rsync
대상에서 파일을 찾는 대신 현재 작업 디렉토리에서 전송할 파일을 찾습니다 *
.
또는 다음 명령을 사용 *
하여 점으로 시작하는 파일을 포함하여 모든 파일 을 확장 할 수 있습니다 .
shopt -s dotglob
shopt 맨 페이지를 참조하십시오 .
답변
모든 숨겨진 파일을 포함하여 서버간에 디렉터리를 동기화하려는 경우 (예 : 대상 서버 에서 에 동기화) 다음 somedirA
을 시도하십시오 . source-server
somedirB
rsync -avz -e ssh --progress user@source-server:/somedirA/ somedirB/
두 경로 끝에 슬래시가 있습니다. 다른 구문은 예상치 못한 결과를 초래할 수 있습니다!
또한 rsync
적절한 쓰기 권한이 있는지 확인하는 것이 더 쉽기 때문에 대상 서버에서 명령 을 수행하는 것이 가장 쉽습니다 (즉, sudo
위의 명령 에 추가해야 할 수도 있음 ).
당연히 말할 것도 없지만 원격 사용자는 somedirA
소스 서버에 대한 읽기 액세스 권한도 필요 합니다. 🙂
답변
나는 같은 문제가 있었다.
나를 위해 다음 명령을 수행했을 때 숨겨진 파일이 rsync’ed 되지 않았습니다 .
rsync -av /home/user1 server02:/home/user1
그러나 경로 끝에 슬래시를 추가했을 때 숨겨진 파일이 재 동기화되었습니다.
rsync -av /home/user1/ server02:/home/user1/
Brian Lacy가 슬래시가 핵심이라고 말했듯이 경로 끝에 슬래시가 있습니다. 나는 그의 게시물에 대해 논평 할 평판이 없거나 그렇게했을 것입니다.
답변
문제는 쉘 와일드 카드 확장 때문이라고 생각합니다. 사용하다 . 별 대신.
다음 예제 디렉토리 컨텐츠를 고려하십시오.
$ ls -a .
. .. .htaccess a.html z.js
쉘의 와일드 카드 확장은 rsync 프로그램이 가져 오는 인수 목록을 변환합니다.
-av * server2::sharename/B
으로
-av a.html z.js server2::sharename/B
명령이 실행되기 전에.
답변
*
숨겨진 파일을 동기화하고하지에 rsynch을 말한다. 생략하면 안됩니다.