현재 나는 다음 Directories
과 같이 RSync-ing합니다 .
* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html
그래서 rsync
하나의 단일 파일은 /var/www/public_html/.htaccess
어떻게합니까?
답변:
디렉토리와 동일한 방식으로 수행하지만 파일 이름에 대한 전체 경로를 소스로 지정합니다. 귀하의 예에서 :
rsync -avz --progress /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/
Michael Place의 대답은 소스 및 대상의 루트 디렉토리에 비해 파일 경로의 모든 디렉토리가 이미 존재하는 경우 훌륭하게 작동합니다.
그러나 파일을이 소스 경로와 동기화하려면 어떻게해야합니까?
/ source-root / a / b / 파일
다음 대상 경로를 가진 파일에 :
/ target-root / a / b / 파일
그리고 디렉토리 a 와 b 가 존재하지 않습니까?
다음과 같은 rsync 명령을 실행해야합니다.
rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]
현재까지 두 가지 답변이 정확하지 않고 하나 이상의 파일을 받게되며 다른 하나는 가능한 한 간단하지 않습니다. 여기에 더 간단한 답변 IMO가 있습니다.
다음은 정확히 하나의 파일을 가져 오지만 mkdir로 dest 디렉토리를 만들어야합니다. 이것은 아마도 가장 빠른 옵션 일 것입니다.
mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/
/ remote / path에 파일 인스턴스가 하나만있는 경우 다음을 수행하면 rsync가 디렉토리를 생성 할 수 있습니다. 더 많은 디렉토리를 검색하기 때문에 시간이 좀 더 걸릴 수 있습니다. 또한 ./local에없는 / remote / path에있는 디렉토리에 대해 빈 디렉토리를 생성합니다.
cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .
--include 및 --exclude의 순서가 중요합니다.