✨ 주요 목적: - 라즈베리파이 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>
89 lines
2.4 KiB
Markdown
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
|