개발 환경에서 다른 서버의 프로덕션 환경으로 파일을 자주 업데이트하기 때문에 두 호스트 모두 경로가 동일하고, 파일을 업데이트하고 매개변수에 동일한 경로를 표시하는 작업이 반복되는 과정이 됩니다 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이 두 번째 방법으로 말했듯이 코드 데이터베이스를 유지 관리하려면 일종의 버전 제어 시스템을 사용해야 합니다. 이렇게 하면 이전 버전으로 되돌릴 수 있습니다.