# 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