소스와 대상에서 동일한 디렉터리/파일을 사용하는 scp에 대한 바로가기

소스와 대상에서 동일한 디렉터리/파일을 사용하는 scp에 대한 바로가기

개발 환경에서 다른 서버의 프로덕션 환경으로 파일을 자주 업데이트하기 때문에 두 호스트 모두 경로가 동일하고, 파일을 업데이트하고 매개변수에 동일한 경로를 표시하는 작업이 반복되는 과정이 됩니다 scp.

매개변수를 사용하여 중괄호 확장이나 기타 기술을 사용할 수 있는 방법이 있습니까 scp? 그 중 하나는 출발지나 목적지가 user@host:처음에 포함되어야 하는 것으로 알고 있습니다.

내가 하고 싶은 일은:

scp user@{dev-server,production-server}:/path/to/file

답변1

나는 scp를 모두 사용하지 않는 두 가지 솔루션을 생각해 냈습니다.

1. 사용.ssh/config돕다

즉, .ssh/config에 이와 같은 내용을 넣으세요.

Host p
HostName production.domain.com
Host d
HostName development.domain.com

그런 다음 scp 명령을 단축할 수 있습니다.

scp user@d:/path user@p:/path

2. Git과 같은 소스코드 관리 소프트웨어를 사용하세요.따라서 디버깅 및 코딩 등을 마치면 다음을 수행할 수 있습니다(단순화).

git add /path/to/my_file
git commit -m "new version and features done"
git push production master

(Ssh를 사용하도록 Git을 설정하기만 하면 됩니다)

3. 사용자의 편의를 위해 특별히 설계된 bash 스크립트인 qscp 또는 Quick-scp를 사용하세요. :) https://github.com/zladuric/quick-scp 기본적으로 qscp 파일을 가져와서 실행 가능하게 만듭니다. (기본값을 환경에 맞게 변경합니다).

하나의 필수 매개변수와 두 개의 선택적 매개변수가 필요합니다. 예:

./qscp file     # it will use defaults
./qscp path/to/dir  dest.server.com # uses default source, but to other dest
./qscp /abs/path/to/file dest.srv.com src.srv.com # takes both dest and source server args

스크립트는 특정 요구 사항에 맞게 쉽게 사용자 정의할 수 있어야 하지만 아직 그다지 강력하지는 않습니다. scp 바이너리, ssh_key 파일 또는 유사한 파일의 위치를 ​​조정해야 할 수도 있습니다.

그 사람들 사과는 어때요? :)

답변2

입력을 줄이기 위해 실행되는 각 명령에 별칭을 추가하는 것이 더 좋을 것이라고 생각합니다.

.bashrc사용자 파일에 다음 명령을 추가합니다.

alias tx='scp user@{dev-server,production-server}:/path/to/file'

이렇게 하면 전체 명령을 입력할 때 발생할 수 있는 입력 오류를 줄이는 데 도움이 됩니다.

하지만 나는 당신이 하고 있는 방식이 전혀 옳다고 생각하지 않습니다. zladuric이 두 번째 방법으로 말했듯이 코드 데이터베이스를 유지 관리하려면 일종의 버전 제어 시스템을 사용해야 합니다. 이렇게 하면 이전 버전으로 되돌릴 수 있습니다.

관련 정보