[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-serversomedirB

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을 말한다. 생략하면 안됩니다.


답변