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/