/var/lib/jenkins/jobs
원격 컴퓨터에 jenkins가 있고 파이프라인 스크립트가 경로에 .xml 형식 파일로 저장되어 있습니다. 다음을 사용하여 해당 폴더의 .xml 파일을 쉽게 나열할 수 있습니다.
find /var/lib/jenkins/jobs -name config.xml
결과 :
/var/lib/jenkins/jobs/productA/config.xml
/var/lib/jenkins/jobs/productB/config.xml
/var/lib/jenkins/jobs/productC/config.xml
/var/lib/jenkins/jobs/productD/config.xml
/var/lib/jenkins/jobs/productE/config.xml
내 로컬 컴퓨터에서 원격 컴퓨터에 있는 폴더의 재귀적 복사본을 만들 수 있었습니다(원격 파일을 로컬 컴퓨터로).
scp -r [email protected]:/var/lib/jenkins/jobs/ /mnt/c/backupJenkins/
제가 하고 싶은 것은 질문 시작 부분에 설명했던 내용을 찾아 scp
.
포럼에 매우 유사한 질문이 올라왔습니다., 그러나 로컬 시스템에서 find 명령을 사용하여 원격으로 전송합니다.
scp --exec=`find <path> -name <expression>` user@host:<path_where_to_copy>
다음은 인터넷 조사와 수정을 바탕으로 시도했지만 작동하지 않은 몇 가지 사항입니다.
scp [email protected]:$`find /var/lib/jenkins/jobs -name config.xml` /mnt/c/backupJenkins
for f in `find /var/lib/jenkins/jobs -name config.xml` ; do
scp [email protected]/$f /mnt/c/backupJenkins
done
scp 명령은 다음과 같습니다.
scp [other options] [source username@IP]:/[directory and file name] [destination username@IP]:/[destination directory]
-p
"추가 옵션"에서는 매개변수를 전달하면 폴더 구조도 유지할 수 있다고 생각합니다.
답변1
단일 명령으로는 작동하지 않지만 두 명령으로는 작동합니다
명령 A:ssh [email protected] 'cd /var/lib/jenkins/jobs; find . -name config.xml ! -path '*/backup*' | rsync -avz --files-from=- . ./backup'
'cd /var/lib/jenkins/jobs;
- 원격 시스템에서 ssh를 사용한 후 디렉토리를 /var/lib/jenkins/jobs로 변경했습니다.
find . -name config.xml ! -path '*/backup*'
- 그런 다음 "/backup" 폴더 경로를 찾아서 제외하면 rsync가 "backup" 폴더를 재귀적으로 복사하는 것을 방지할 수 있습니다.
rsync --files-from=- SRC/ DST/
이 rsync 명령 형식을 사용하여 매개변수를 추가 -avz
하고--files-from=-
| rsync -avz --files-from=- . ./backup'
- 여기서 단일 대시 - 파일 이름은 UNIX 도구 간의 일반적인 규칙인 STDIN을 나타냅니다.
명령 B rsync를 사용하여 SSH를 통해 원격 서버에서 로컬 서버로 파일을 복사하고 로컬 시스템의 새 폴더 DAY-MONTH-YEAR( /mnt/c/backupJenkins/$(/bin/date)에 저장합니다. +% d-%m-%Y) )
명령 B:rsync -avz [email protected]:/var/lib/jenkins/jobs/backup/* /mnt/c/backupJenkins/$(/bin/date +%d-%m-%Y)