scp -r… 그러나 지정된 서브 디렉토리를 제외 (제외)


29

디렉토리 구조는 다음과 같습니다.

/a/
/a/b/
/a/c/

/ a / c / 하위 디렉토리를 제외하고 모든 것을 복사하고 싶습니다.

scp -rp myserver:/a .      # this will copy everything

Q : scp 명령에서 제외 할 디렉토리를 어떻게 지정합니까?


3
원래의 동기는 "/ a / c /"서브 디렉토리가 매우 크므로 (기가 바이트), 그대로두면 사본이 몇 분에서 몇 초로 줄어 듭니다.
russian_spy

답변:


28

나는 당신이 할 수 있다고 생각하지 않지만 rsync를 사용할 수 있습니까? 이 같은:

rsync -a --exclude=a/c myserver:/a .

5

나는 이것이 SSH를 사용하는 올바른 방법 일 것이라고 생각하지만 scp로 그것을 수행하는 방법을 찾지 못했지만 ssh를 통해 rsync를 사용하면 해결할 수 있습니다.

rsync -e 'ssh -ax' -av --exclude /a/c myserver:/a .

-n 스위치를 사용하면 프로세스가 완전히 실행됩니다.

 rsync -e 'ssh -ax' -av --exclude /a/c -n myserver:/a .

또한 시도하십시오 -rz: -e "ssh -i private.pem" -rz 'users@server:/full/path/'.
mbrownnyc

1

아래 예와 같이 확장 글 로빙을 사용할 수 있습니다.

#Enable extglob
shopt -s extglob

cp -rv !(./excludeme/*.jpg) /var/destination

0

완벽한 방법은 아니지만 제외하려는 하위 디렉토리를 읽기 전용으로 설정하십시오. chmod -R 444 /a/c트릭을해야합니다. 해당 디렉토리를 덮어 쓰려고하면 "permission denied"오류가 발생합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.