ssh를

2013-08-02 5 views
0

다음 명령은 하나의 파일에 대해 나를 위해 좋은 작품을 통해 로컬 디렉터리를 동기화 : 재귀 그것을 할ssh를

scp [email protected]:foobar.txt /some/local/directory 

내가하고 싶은 것은 (모든 하위 디렉토리에 대한 예/서버에 주어진 경로의 서브 파일) 폴더를 병합하고 이미 로컬에 존재하는 파일을 덮어 쓰고 마지막으로 특정 값 (예 : 10MB)보다 작은 파일 만 서버에 저장합니다.

어떻게하면됩니까?

답변

1

rsync를 사용하십시오. - -z (전송 압축)

rsync -az --max-size=10m [email protected]:foobar.txt /some/local/directory 

-a (동기화가, 전송 소유권, 재귀 속성, 다른 것들 사이 심볼릭 링크 아카이브 모드) :

귀하의 명령은 다음과 같을 것입니다 --max-size (특정 크기까지만 파일 복사)

더 많은 플래그가 적합 할 수 있습니다. 자세한 내용은 문서 체크 아웃 - http://linux.die.net/man/1/rsync

0

첫 번째 옵션 : rsync을 사용하십시오.

두 번째 옵션은, 한 라이너를 될 수 없습니다,하지만 세 가지 또는 네 개의 라인으로 수행 할 수 있습니다

ssh를 사용하여 원격 시스템의 tar 아카이브를 생성합니다. scp으로 원격 시스템의 타르를 복사하십시오. 아카이브를 로컬에서 푸십시오. 아카이브의 생성이 복잡 비트를 얻을하고, 로컬 것을 할 것입니다 스크립트를 만들 scp로 서버에 업로드하는 것은 매우 실용적입니다 몇 가지 옵션을 find 및/또는 tar을 사용하는 것, 오직 다음 경우

ssh을 사용하여 원격으로 실행하십시오.

+0

실제로는 나쁜 옵션이 아니지만 큰 파일을 제거하려는 사실을 고려하지 않았습니다. 어떤 아이디어? – user2295350

+0

4k보다 작은 현재 디렉토리의 tar 파일 (파일에 넣고 원격 호스트로 전송하고 ssh를 사용하여 실행할 수 있음) :'tar cf a.tar $ {find. -t f - 크기 -4096c}' – piokuc