rpi-brother-printer-setup/sync.md
시골약사 9efd731f98 Initial commit: Raspberry Pi CUPS 브라더 프린터 설정 리포지토리
 주요 목적:
- 라즈베리파이 3B+에서 브라더 프린터 CUPS 설정
- wget으로 브라더 프린터 드라이버(gz) 쉽게 다운로드
- 프린터 설정 자동화 스크립트 및 문서 제공

📦 포함 파일:
- linux-brprinter-installer-2.2.6-0.gz: 브라더 프린터 드라이버
- 각종 설정 문서 (COM 포트, Samba 마운트, 동기화 등)
- Gitea 저장소 가이드

🔧 기술 스택:
- Raspberry Pi OS
- CUPS (Common Unix Printing System)
- Brother printer driver

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 14:02:02 +00:00

2.4 KiB

1) 필요 패키지

sudo apt update sudo apt install -y inotify-tools rsync

2) 수신 폴더/마운트 경로 확인(없으면 생성)

sudo mkdir -p /var/spool/hylafax/recvq sudo mkdir -p /mnt/fax

3) 실시간 이동 스크립트 생성

cat | sudo tee /usr/local/bin/move-fax.sh >/dev/null <<'EOF' #!/bin/bash set -euo pipefail

SRC="/var/spool/hylafax/recvq" DST="/mnt/fax" LOG="/var/log/fax-move.log"

echo "[FAX-MOVE] started (SRC=${SRC}, DST=${DST})" | tee -a "$LOG"

NAS 마운트 대기(최대 60초)

for i in {1..60}; do if mountpoint -q "$DST"; then echo "[FAX-MOVE] mount OK: $DST" | tee -a "$LOG" break fi if [ "$i" -eq 60 ]; then echo "[FAX-MOVE] mount not ready after 60s, continuing and will keep trying..." | tee -a "$LOG" fi sleep 1 done

inotify: 새 파일이 완전히 닫히거나(moved_to/close_write) 도착하면 처리

TIFF/TIF/PDF 우선 감시(확장자 제한 없이 동작 가능, 여기서는 전체 감시 후 파일만 필터)

inotifywait -m -e close_write -e moved_to --format '%w%f' "$SRC" | while read -r FILE; do

파일만 처리

[ -f "$FILE" ] || continue

BASENAME="$(basename "$FILE")" TARGET="${DST}/${BASENAME}"

마운트 점검(중간에 끊겼을 수도 있음)

if ! mountpoint -q "$DST"; then echo "[FAX-MOVE] WARN: NAS not mounted, skip: $BASENAME" | tee -a "$LOG" continue fi

복사 후 소스 제거(성공시에만)

if rsync -a --partial --inplace "$FILE" "$TARGET"; then sync rm -f -- "$FILE" echo "[FAX-MOVE] moved: $BASENAME -> $DST" | tee -a "$LOG" else echo "[FAX-MOVE] ERROR: rsync failed for $BASENAME" | tee -a "$LOG" fi done EOF

sudo chmod +x /usr/local/bin/move-fax.sh

4) systemd 서비스 유닛 생성

cat | sudo tee /etc/systemd/system/fax-move.service >/dev/null <<'EOF' [Unit] Description=Move received faxes to NAS (real-time) After=network-online.target mnt-fax.mount Wants=network-online.target Requires=mnt-fax.mount ConditionPathIsDirectory=/var/spool/hylafax/recvq ConditionPathIsMountPoint=/mnt/fax

[Service] Type=simple ExecStart=/usr/local/bin/move-fax.sh Restart=always RestartSec=2 User=pi

NAS 일시 끊김 대비로 환경변수 여유(선택)

Environment=RSYNC_RSH=ssh

[Install] WantedBy=multi-user.target EOF

5) 적용 및 시작

sudo systemctl daemon-reload sudo systemctl enable --now fax-move.service

6) 동작 확인(로그 tail)

sudo journalctl -u fax-move.service -n 50 -f