System & Infrastructure/NAS

[시놀로지 Docker] SSH로 Tomcat 컨테이너 내부 파일 가져오기1

ai-one 2025. 5. 7. 11:43
반응형

[시놀로지 Docker] SSH로 Tomcat 컨테이너 내부 파일 가져오기

도커 컨테이너에서 실행 중인 Tomcat 서버의 내부 파일을 시놀로지 NAS로 가져와야 할 때가 있습니다. 로그 파일을 분석하거나, 설정 파일을 백업하거나, 웹 애플리케이션 파일을 추출해야 하는 경우 등 다양한 상황에서 이 기술이 필요합니다. 이번에는 SSH를 통해 Tomcat 컨테이너 내부 파일을 시놀로지 호스트로 가져오는 방법을 알아보겠습니다.

1. 시놀로지 NAS에 SSH 접속하기

먼저 시놀로지 NAS에 SSH로 접속합니다:

 
bash
ssh admin@192.168.1.100

비밀번호를 입력하여 로그인합니다.

2. 컨테이너 정보 확인하기

Tomcat 컨테이너의 ID를 확인합니다:

 
bash
sudo docker ps | grep tomcat

출력 예시:

 
CONTAINER ID   IMAGE             COMMAND                  CREATED        STATUS        PORTS                    NAMES
a1b2c3d4e5f6   tomcat:9.0        "catalina.sh run"        5 days ago     Up 5 days     0.0.0.0:8080->8080/tcp   tomcat_webapp

3. docker cp 명령으로 파일 복사하기

단일 파일 가져오기

Tomcat 컨테이너의 로그 파일을 시놀로지 NAS로 복사하려면:

 
bash
sudo docker cp a1b2c3d4e5f6:/usr/local/tomcat/logs/catalina.out /volume1/docker/tomcat_logs/

이 명령은 컨테이너 내부의 catalina.out 파일을 시놀로지의 /volume1/docker/tomcat_logs/ 디렉토리로 복사합니다.

디렉토리 전체 가져오기

Tomcat의 설정 디렉토리 전체를 복사하려면:

 
bash
sudo docker cp a1b2c3d4e5f6:/usr/local/tomcat/conf/ /volume1/docker/tomcat_backup/conf/

만약 대상 디렉토리가 존재하지 않는다면, 먼저 생성해야 합니다:

 
bash
mkdir -p /volume1/docker/tomcat_backup/conf/

웹 애플리케이션 파일 가져오기

특정 웹 애플리케이션 디렉토리를 복사하려면:

 
bash
sudo docker cp a1b2c3d4e5f6:/usr/local/tomcat/webapps/myapp/ /volume1/docker/webapp_backup/

4. 와일드카드를 사용한 파일 복사

docker cp는 직접적으로 와일드카드를 지원하지 않습니다. 하지만 다음과 같은 방법으로 비슷한 효과를 낼 수 있습니다:

 
bash
# 컨테이너 내부에서 임시 디렉토리에 파일 모으기
sudo docker exec a1b2c3d4e5f6 bash -c "mkdir -p /tmp/logs_copy && cp /usr/local/tomcat/logs/*.log /tmp/logs_copy/"

# 임시 디렉토리 전체를 복사
sudo docker cp a1b2c3d4e5f6:/tmp/logs_copy/ /volume1/docker/tomcat_logs/

# 임시 디렉토리 정리
sudo docker exec a1b2c3d4e5f6 bash -c "rm -rf /tmp/logs_copy"

5. 대용량 파일 처리하기

대용량 로그 파일이나 많은 양의 데이터를 복사할 때는 압축 후 복사하는 것이 효율적입니다:

 
bash
# 컨테이너 내에서 파일 압축
sudo docker exec a1b2c3d4e5f6 bash -c "cd /usr/local/tomcat/logs && tar -czf /tmp/tomcat_logs.tar.gz *.log"

# 압축 파일 복사
sudo docker cp a1b2c3d4e5f6:/tmp/tomcat_logs.tar.gz /volume1/docker/

# 시놀로지에서 압축 해제
cd /volume1/docker/
tar -xzf tomcat_logs.tar.gz -C tomcat_logs/

# 컨테이너 내 임시 파일 삭제
sudo docker exec a1b2c3d4e5f6 bash -c "rm /tmp/tomcat_logs.tar.gz"

6. 자동화된 백업 스크립트 만들기

정기적인 백업을 위한 간단한 쉘 스크립트를 만들 수 있습니다:

 
bash
#!/bin/bash
# 파일명: /volume1/scripts/tomcat_backup.sh

# 변수 설정
CONTAINER_ID="a1b2c3d4e5f6"
BACKUP_DIR="/volume1/docker/tomcat_backup"
DATE=$(date +%Y%m%d_%H%M%S)

# 백업 디렉토리 생성
mkdir -p ${BACKUP_DIR}/${DATE}/conf
mkdir -p ${BACKUP_DIR}/${DATE}/webapps
mkdir -p ${BACKUP_DIR}/${DATE}/logs

# 설정 파일 백업
sudo docker cp ${CONTAINER_ID}:/usr/local/tomcat/conf/ ${BACKUP_DIR}/${DATE}/conf/

# 웹앱 백업
sudo docker cp ${CONTAINER_ID}:/usr/local/tomcat/webapps/ ${BACKUP_DIR}/${DATE}/webapps/

# 로그 파일 백업
sudo docker cp ${CONTAINER_ID}:/usr/local/tomcat/logs/ ${BACKUP_DIR}/${DATE}/logs/

# 백업 완료 메시지
echo "Tomcat backup completed at ${DATE}" >> ${BACKUP_DIR}/backup_history.log

이 스크립트를 실행 가능하게 만들고 실행합니다:

 
bash
chmod +x /volume1/scripts/tomcat_backup.sh
/volume1/scripts/tomcat_backup.sh

시놀로지 작업 스케줄러를 사용하여 이 스크립트를 정기적으로 실행할 수도 있습니다.

7. 파일 권한 관리하기

복사된 파일의 권한을 적절히 설정해야 할 수도 있습니다:

 
bash
# 복사된 파일의 소유자 변경
sudo chown -R admin:users /volume1/docker/tomcat_backup/

# 권한 설정
sudo chmod -R 755 /volume1/docker/tomcat_backup/

8. 원격 시스템으로 파일 전송하기

시놀로지에서 다른 시스템으로 파일을 전송하려면 SCP나 SFTP를 사용할 수 있습니다:

 
bash
# 시놀로지에서 다른 서버로 파일 전송
scp /volume1/docker/tomcat_backup/conf/server.xml user@remote-server:/path/to/destination/

9. 실시간 모니터링 설정

중요한 로그 파일을 실시간으로 모니터링하기 위한 설정:

 
bash
# 로그 파일을 실시간으로 가져와 모니터링
sudo docker exec a1b2c3d4e5f6 bash -c "tail -f /usr/local/tomcat/logs/catalina.out" | tee /volume1/docker/tomcat_logs/live_catalina.out

Ctrl+C를 눌러 모니터링을 중단할 수 있습니다.

10. 정리 및 유지 관리

오래된 백업 파일 정리:

 
bash
# 30일 이상 된 백업 파일 삭제
find /volume1/docker/tomcat_backup/ -type d -name "2023*" -mtime +30 -exec rm -rf {} \;

 

 

시놀로지 NAS에서 Docker로 운영 중인 Tomcat 컨테이너의 내부 파일을 효율적으로 추출하고 관리하는 방법을 알아보았습니다. 이러한 기술은 서버 관리, 문제 해결, 백업 및 복구 작업에 필수적입니다. 특히 정기적인 백업 스크립트를 구성하면 중요 데이터의 안전성을 높이고 긴급 상황에서 빠르게 복구할 수 있는 기반을 마련할 수 있습니다.

반응형