[linux] 단일 파일을 RSYNC하는 방법은 무엇입니까?

현재 나는 다음 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/


답변

기본 구문

rsync options source destination

rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html

더 읽어보기


답변

Michael Place의 대답은 소스 및 대상의 루트 디렉토리에 비해 파일 경로의 모든 디렉토리가 이미 존재하는 경우 훌륭하게 작동합니다.

그러나 파일을이 소스 경로와 동기화하려면 어떻게해야합니까?

/ source-root / a / b / 파일

다음 대상 경로를 가진 파일에 :

/ target-root / a / b / 파일

그리고 디렉토리 ab 가 존재하지 않습니까?

다음과 같은 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의 순서가 중요합니다.


답변