시놀로지 도커 Redroid – Google Photos 미디어 갱신 방법

image.png

 

이전 시리즈 글에서 리드로이드 구성을 성공 하셨다면

이제 미디어 파일을 백업 하기위한 설정을 해줘야겠죠

 

여러가지 방법이 있겠지만

파일 스테이션을 통해 리드로이드 내부 폴더에 접근이 가능하기 때문에

시놀 포토나 이미치등의 이미지 파일을

동기화나 복사등 여러가지 방법을 통해 리드로이드 미디어 폴더에 넣는 게 가능합니다

이 부분은 스크립트, 작업 스케쥴러, 파이썬 코드, 도커 컨테이너등등

원하는 방법을 이용해 구성이 가능하겠습니다

 

그런데 문제는 파일 스테이션을 통해 이미지를 리드로이드 미디어 폴더에 넣었을 때

리드로이드 포토 앱에서 바로 인식이 안됩니다

 

리드로이드 컨테이너를 재시작하거나 다른 방법을 사용해야 하죠

 

우선 첫번째는 

방법 1: ADB 사용 (외부 PC에서)

Mac/PC 터미널에서 실행:

# NAS의 Redroid에 연결
adb connect <NAS_IP>:5578

# 미디어 스캔 실행
adb -s <NAS_IP>:5578 shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/

# 특정 폴더만 스캔
adb -s <NAS_IP>:5578 shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/DCIM/

외부에서 adb를 이용해서 미디어 파일 스캔을 진행하는 겁니다

외부의 haos나 n8n 같은 서비스등을 이용해서 컨트롤 가능 하겠죠

 

두번째는

방법 2: SSH에서 직접 실행 (NAS 내부)

# SSH 접속
ssh root@<NAS_IP>

# 미디어 스캔 실행 (반드시 su shell -c 사용)
docker exec redroid su shell -c 'am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/'

# 특정 폴더만 스캔
docker exec redroid su shell -c 'am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/Pictures/'

나스 내부에서 미디어 스캔을 실행하는 방법입니다

이 방법은 스크립트를 만들어서 실행하거나 적업 스케쥴러를 통해 실행이 가능하겠네요

 

방법 3: 스크립트 생성 (자동화용)

# SSH에서 스크립트 생성
cat > /volume1/docker/redroid/scan-media.sh << 'EOF'
#!/bin/bash
# Redroid 미디어 스캔 스크립트
# 사용법: ./scan-media.sh [폴더경로]
# 예시: ./scan-media.sh /sdcard/Pictures/

CONTAINER_NAME="redroid"
SCAN_PATH="${1:-/sdcard/}"

# 컨테이너 실행 중인지 확인
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
    RESULT=$(docker exec ${CONTAINER_NAME} su shell -c "am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file://${SCAN_PATH}" 2>&1)
    
    if echo "$RESULT" | grep -q "Broadcast completed"; then
        echo "$(date '+%Y-%m-%d %H:%M:%S'): 미디어 스캔 완료 - ${SCAN_PATH}"
    else
        echo "$(date '+%Y-%m-%d %H:%M:%S'): 스캔 실패 - ${RESULT}"
        exit 1
    fi
else
    echo "$(date '+%Y-%m-%d %H:%M:%S'): 컨테이너 ${CONTAINER_NAME}가 실행 중이 아닙니다"
    exit 1
fi
EOF

# 실행 권한 부여
chmod +x /volume1/docker/redroid/scan-media.sh


스크립트 테스트:

# 전체 스캔
/volume1/docker/redroid/scan-media.sh

# 특정 폴더만 스캔
/volume1/docker/redroid/scan-media.sh /sdcard/DCIM/

스크립트를 만들어서 새벽 시간에 스캔을 돌리면 백업이 진행 될 거 같습니다만

스크립트는 테스트가 안됐으니 사용하실 분들은 테스트 해보시기 바랍니다

 

방법 4: 작업 스케줄러로 자동화 (DSM)

주기적으로 미디어 스캔을 실행하여 새 사진을 자동 백업합니다.

설정 방법

1. **DSM****제어판****작업 스케줄러**

2. **생성****예약된 작업****사용자 정의 스크립트**

3. **일반** 탭:
   - 작업: `Redroid 미디어 스캔`
   - 사용자: `root`
   - 활성화됨: ✅ 체크

4. **일정** 탭 (원하는 주기 선택):
   
   | 주기 | 설정 예시 |
   |------|---------|
   | 매시간 | 날짜: 매일, 반복: 매 1시간 |
   | 매 30분 | 날짜: 매일, 반복: 매 30분 |
   | 매일 1회 | 날짜: 매일, 시간: 03:00 |

5. **작업 설정** 탭:
   - 알림 보내기: 비정상 종료 시에만 (선택사항)
   - 사용자 정의 스크립트:
     ```bash
     /volume1/docker/redroid/scan-media.sh
     ```

로그 확인

작업 실행 로그를 파일로 저장하려면:

# 스크립트 수정 (로그 파일 추가)
cat > /volume1/docker/redroid/scan-media.sh << 'EOF'
#!/bin/bash
# Redroid 미디어 스캔 스크립트 (로그 포함)

CONTAINER_NAME="redroid"
SCAN_PATH="${1:-/sdcard/}"
LOG_FILE="/volume1/docker/redroid/scan-media.log"

log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S'): $1" | tee -a "$LOG_FILE"
}

# 로그 파일 크기 관리 (1MB 초과 시 정리)
if [ -f "$LOG_FILE" ] && [ $(stat -c%s "$LOG_FILE" 2>/dev/null || stat -f%z "$LOG_FILE") -gt 1048576 ]; then
    tail -100 "$LOG_FILE" > "${LOG_FILE}.tmp" && mv "${LOG_FILE}.tmp" "$LOG_FILE"
fi

# 컨테이너 실행 중인지 확인
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
    RESULT=$(docker exec ${CONTAINER_NAME} su shell -c "am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file://${SCAN_PATH}" 2>&1)
    
    if echo "$RESULT" | grep -q "Broadcast completed"; then
        log "미디어 스캔 완료 - ${SCAN_PATH}"
    else
        log "스캔 실패 - ${RESULT}"
        exit 1
    fi
else
    log "컨테이너 ${CONTAINER_NAME}가 실행 중이 아닙니다"
    exit 1
fi
EOF

chmod +x /volume1/docker/redroid/scan-media.sh


로그 확인:

# 최근 로그 확인
tail -20 /volume1/docker/redroid/scan-media.log

작업 스케쥴러를 통해 스크립트 실행도 가능하겠죠

 

스크립트와 작업 스케쥴러는 실제 테스트가 진행되지 않았으니

adb나 ssh 명령어를 통해 직접 스크립트를 작성 하시거나 작업 스케쥴러 등록을 해보시면 될 거 같습니다

 

아래 스샷들은 SSH(adb) 명령어 테스트 스샷 입니다

 

스크린샷 2025-12-16 16.38.45.png

파일 스테이션을 통해 이미지 파일 하나를 올렸습니다만

 

스크린샷 2025-12-16 16.39.01.png

scrcpy 화면에서 포토를 실행 했을 때 새로 추가된 이미지가 보이지 않습니다

 

스크린샷 2025-12-16 16.39.34.png

SSH 상(adb도 동일)에서 명령어를 실행 해주면

 

스크린샷 2025-12-16 16.39.49.png

scrcpy로 접속 했을 때 새로 추가한 파일이 보입니다

 

 

스크린샷 2025-12-16 16.42.12.png

온라인에서 확인 했을 때도 백업이 잘 됐습니다

 

스크린샷 2025-12-16 19.05.44.png

저장용량도 사용량 0B 잘 유지되고 있습니다

 

참고로 중간에 scrcpy 를 실행한 이유는 확인 스샷을 찍기 위해 실행한 거고요

scrcpy 실행 없이 SSH나 adb 명령어 실행 후 온라인 구글 포토를 확인 하시면 백업이 돼있습니다

 

스크린샷 2025-12-16 17.18.49.png

작업이 없을 때는 n100 네이티브 기준 CPU 1% 정도를 사용하네요

그냥 쭉 켜두고 사용하면서 파일을 직접 업로드 하거나 폴더 동기화 후

새벽에 한 번씩 스캔 해주면 될 거 같습니다

 

물론 많은 이미지를 한 번에 백업 하게 되면 어떻게 될지는 확인 못해봤습니다

도커에서 실행 된다는 한계 때문에 메모리나 cpu 사용량 초과로 다운 될 수도 있고

그냥 시간이 오래 걸리기만 하고 문제 없을 수도 있고 

저는 사진이 많지 않아서 확인이 안되네요

 

사용하실 때 주의하시길 바랍니다

 

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다