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

89 lines
2.4 KiB
Markdown

# 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