scp 특정 파일만

scp 특정 파일만

SSH를 통해 변경된 파일을 godaddy에 복사하려고합니다. Godaddy는 끔찍하므로 물론 rsync를 허용하지 않습니다. scp를 사용할 수 있지만 실제로는 변경된 파일만 복사하고 싶습니다. 나는 이것이 가능하지 않다고 생각하므로 모든 PHP 파일만 scp할 수 있는지 궁금합니다.

하지만 하위 디렉토리가 많기 때문에 -r 옵션을 사용해야 합니다.

scp를 사용하여 확장자가 모든 파일을 재귀적으로 복사할 수 있는 방법이 있습니까 php? 이와 같이:

scp -r -name "*php" /local/html/ user@server:/home/html/ (작동하지 않음)

원하는 결과

//로컬 머신에서
$ 찾기 ./소스

소스/1.php
소스/2.php
소스/하위
소스/하위/3.php
소스/하위/4.php
소스/하위/DONT-copy.txt
소스/하위/DONT-copy.png
소스/하위/하위 2
소스/하위/sub2/5.php
소스/하위/sub2/6.php

//파일을 복사하는 명령
$ [여기에 scp 명령이 있습니다]

//원격 서버에서
$ 찾기 ./목적지

목적지/1.php
목적지/2.php
대상/하위
대상/하위/3.php
대상/하위/4.php
대상/하위/하위 2
대상/하위/sub2/5.php
대상/하위/sub2/6.php

이것은 작동하지 않습니다

//로컬 머신에서
$ 찾기 ./소스

소스/1.php
소스/2.php
소스/하위
소스/하위/3.php
소스/하위/4.php
소스/하위/DONT-copy.txt
소스/하위/DONT-copy.png
소스/하위/하위 2
소스/하위/sub2/5.php
소스/하위/sub2/6.php

//파일을 복사하는 명령
$ CD 소스; scp -r *.php user@remote:/destination

//원격 서버에서
$ 찾기 ./목적지

목적지/1.php
목적지/2.php

아마도 우리는 find를 사용해 볼 수도 있겠지만, 나는 이것을 확신합니다.그대로 작동하지 않습니다:

find ./source -name "*.php" -exec scp {} user@remote:{} \;

{}find에서 여러 연산자를 사용할 수 없다고 생각하기 때문에 작동하지 않습니다 .

또한 원격 서버에서 경로를 정렬하는 것이 까다로울 수 있습니다. 예를 들어 find가 반환되고 원격 서버에서 /users/johndoe/documents/source/1.php끝나기를 원하는 경우입니다 ./home/jane/www/destination/1.php

답변1

호스트가 푸시만 허용하고 rsync는 허용하지 않을 때 수행하는 작업은 다음과 같습니다.

  • 대상 구조와 유사하도록 로컬 시스템에 "섀도우" 디렉터리를 만듭니다.
  • 이 섀도우 디렉터리로 푸시하고 출력을 캡처하는 데 사용합니다 ( 스크립팅하려는 경우 rsync있음 ).--log-file
  • 출력 에서 rsync삭제해야 하는 파일을 결정하거나 푸시하여 목록을 만듭니다.
  • 어쩌면 (푸시 방식에 따라 다름): 변경해야 하는 파일에서만 패키지를 생성합니다.
  • 푸시 도구(ftp, scp 등)를 시작하고 목록의 파일에서 실행되도록 하세요.

답변2

할 수 없나요 scp -r *.php destination?

답변3

scp -r user@ip:/data/files/*.php /tmp/files/

관련 정보