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>
This commit is contained in:
commit
9efd731f98
64
com포트자동.md
Normal file
64
com포트자동.md
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
sudo systemctl stop rdpclient
|
||||||
|
|
||||||
|
cat | sudo tee /home/pi/rdp-start.sh > /dev/null <<'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# ---- USB-Serial 자동 탐색 (Honeywell 우선) ----
|
||||||
|
DEV=""
|
||||||
|
for CAND in /dev/ttyACM* /dev/ttyUSB*; do
|
||||||
|
if [ -e "$CAND" ]; then
|
||||||
|
VENDOR=$(udevadm info -q all -n "$CAND" 2>/dev/null | grep ID_VENDOR_ID || true)
|
||||||
|
PRODUCT=$(udevadm info -q all -n "$CAND" 2>/dev/null | grep ID_MODEL_ID || true)
|
||||||
|
if echo "$VENDOR$PRODUCT" | grep -qi "0c2e"; then
|
||||||
|
DEV="$CAND"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$DEV" ]; then
|
||||||
|
echo "[RDP-START] serial redirect: $DEV -> COM3"
|
||||||
|
SERIAL_OPT="/serial:COM3,${DEV},Serial"
|
||||||
|
else
|
||||||
|
echo "[RDP-START] WARNING: no Honeywell device found; skipping serial redirect"
|
||||||
|
SERIAL_OPT=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---- 경량 WM + 화면 절전 방지 ----
|
||||||
|
openbox-session &
|
||||||
|
xset s off
|
||||||
|
xset -dpms
|
||||||
|
xset s noblank
|
||||||
|
setxkbmap us || true
|
||||||
|
|
||||||
|
# ---- 접속 기본값 ----
|
||||||
|
SIZE="1920x1080"
|
||||||
|
BPP="16"
|
||||||
|
SRV="pharmq.kr:7390"
|
||||||
|
USR="pqserver"
|
||||||
|
PW="pharmq119"
|
||||||
|
|
||||||
|
# ---- 성능 최적화 (윈도우 UI 효과 제거) ----
|
||||||
|
PERF="-wallpaper -themes -menu-anims -window-drag"
|
||||||
|
|
||||||
|
# ---- FreeRDP 공통 옵션 ----
|
||||||
|
BASE="/u:${USR} /p:${PW} /v:${SRV} \
|
||||||
|
/bpp:${BPP} /clipboard /cert:ignore \
|
||||||
|
/compression /network:lan ${PERF} /log-level:INFO /f"
|
||||||
|
|
||||||
|
# ---- 코덱 순차 시도 ----
|
||||||
|
for MODE in "/gfx:avc420" "/gfx" "/rfx" ""; do
|
||||||
|
LABEL="${MODE:-bitmap}"
|
||||||
|
echo "[RDP-START] trying: xfreerdp3 ${LABEL}"
|
||||||
|
if xfreerdp3 $BASE $SERIAL_OPT $MODE; then
|
||||||
|
echo "[RDP-START] connected with: ${LABEL}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sudo chmod +x /home/pi/rdp-start.sh
|
||||||
|
sudo systemctl start rdpclient
|
||||||
311
git.md
Normal file
311
git.md
Normal file
@ -0,0 +1,311 @@
|
|||||||
|
# Gitea 리포지토리 생성 및 푸시 가이드
|
||||||
|
|
||||||
|
## 🏠 서버 정보
|
||||||
|
|
||||||
|
- **Gitea 서버**: `git.0bin.in`
|
||||||
|
- **사용자명**: `thug0bin`
|
||||||
|
- **이메일**: `thug0bin@gmail.com`
|
||||||
|
- **액세스 토큰**: `d83f70b219c6028199a498fb94009f4c1debc9a9`
|
||||||
|
|
||||||
|
## 🚀 새 리포지토리 생성 및 푸시 과정
|
||||||
|
|
||||||
|
### 1. 로컬 Git 리포지토리 초기화
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 프로젝트 디렉토리로 이동
|
||||||
|
cd /path/to/your/project
|
||||||
|
|
||||||
|
# Git 초기화
|
||||||
|
git init
|
||||||
|
|
||||||
|
# .gitignore 파일 생성 (필요시)
|
||||||
|
cat > .gitignore << 'EOF'
|
||||||
|
# Dependencies
|
||||||
|
node_modules/
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Build outputs
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Python
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
*.so
|
||||||
|
.Python
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
|
||||||
|
# Database
|
||||||
|
*.db
|
||||||
|
*.sqlite
|
||||||
|
*.sqlite3
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Git 사용자 설정 확인
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Git 사용자 정보 확인
|
||||||
|
git config --list | grep -E "user"
|
||||||
|
|
||||||
|
# 설정되지 않은 경우 설정
|
||||||
|
git config --global user.name "시골약사"
|
||||||
|
git config --global user.email "thug0bin@gmail.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 첫 번째 커밋
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 모든 파일 스테이징
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# 첫 커밋 (상세한 커밋 메시지 예시)
|
||||||
|
git commit -m "$(cat <<'EOF'
|
||||||
|
Initial commit: [프로젝트명]
|
||||||
|
|
||||||
|
✨ [주요 기능 설명]
|
||||||
|
- 기능 1
|
||||||
|
- 기능 2
|
||||||
|
- 기능 3
|
||||||
|
|
||||||
|
🛠️ 기술 스택:
|
||||||
|
- 사용된 기술들 나열
|
||||||
|
|
||||||
|
🔧 주요 구성:
|
||||||
|
- 프로젝트 구조 설명
|
||||||
|
|
||||||
|
🤖 Generated with [Claude Code](https://claude.ai/code)
|
||||||
|
|
||||||
|
Co-Authored-By: Claude <noreply@anthropic.com>
|
||||||
|
EOF
|
||||||
|
)"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. 원격 리포지토리 연결 및 푸시
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 원격 리포지토리 추가 (리포지토리명을 실제 이름으로 변경)
|
||||||
|
git remote add origin https://thug0bin:d83f70b219c6028199a498fb94009f4c1debc9a9@git.0bin.in/thug0bin/[REPOSITORY_NAME].git
|
||||||
|
|
||||||
|
# 브랜치를 main으로 변경
|
||||||
|
git branch -M main
|
||||||
|
|
||||||
|
# 원격 리포지토리로 푸시
|
||||||
|
git push -u origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📝 리포지토리명 네이밍 규칙
|
||||||
|
|
||||||
|
### 권장 네이밍 패턴:
|
||||||
|
- **프론트엔드 프로젝트**: `project-name-frontend`
|
||||||
|
- **백엔드 프로젝트**: `project-name-backend`
|
||||||
|
- **풀스택 프로젝트**: `project-name-fullstack`
|
||||||
|
- **도구/유틸리티**: `tool-name-utils`
|
||||||
|
- **문서/가이드**: `project-name-docs`
|
||||||
|
|
||||||
|
### 예시:
|
||||||
|
- `figma-admin-dashboard` ✅
|
||||||
|
- `anipharm-api-server` ✅
|
||||||
|
- `inventory-management-system` ✅
|
||||||
|
- `member-portal-frontend` ✅
|
||||||
|
|
||||||
|
## 🔄 기존 리포지토리에 추가 커밋
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 변경사항 확인
|
||||||
|
git status
|
||||||
|
|
||||||
|
# 변경된 파일 스테이징
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# 또는 특정 파일만 스테이징
|
||||||
|
git add path/to/specific/file
|
||||||
|
|
||||||
|
# 커밋
|
||||||
|
git commit -m "커밋 메시지"
|
||||||
|
|
||||||
|
# 푸시
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🌿 브랜치 작업
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 새 브랜치 생성 및 전환
|
||||||
|
git checkout -b feature/new-feature
|
||||||
|
|
||||||
|
# 브랜치에서 작업 후 커밋
|
||||||
|
git add .
|
||||||
|
git commit -m "Feature: 새로운 기능 추가"
|
||||||
|
|
||||||
|
# 브랜치 푸시
|
||||||
|
git push -u origin feature/new-feature
|
||||||
|
|
||||||
|
# main 브랜치로 돌아가기
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
# 브랜치 병합 (필요시)
|
||||||
|
git merge feature/new-feature
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛠️ 자주 사용하는 Git 명령어
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 현재 상태 확인
|
||||||
|
git status
|
||||||
|
|
||||||
|
# 변경 내역 확인
|
||||||
|
git diff
|
||||||
|
|
||||||
|
# 커밋 히스토리 확인
|
||||||
|
git log --oneline
|
||||||
|
|
||||||
|
# 원격 리포지토리 정보 확인
|
||||||
|
git remote -v
|
||||||
|
|
||||||
|
# 특정 포트 프로세스 종료 (개발 서버 관련)
|
||||||
|
lsof -ti:PORT_NUMBER | xargs -r kill -9
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 포트 관리 스크립트
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 특정 포트 종료 함수 추가 (bashrc에 추가 가능)
|
||||||
|
killport() {
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Usage: killport <port_number>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
lsof -ti:$1 | xargs -r kill -9
|
||||||
|
echo "Killed processes on port $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 사용 예시
|
||||||
|
# killport 7738
|
||||||
|
# killport 5000
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📋 VS Code 워크스페이스 설정
|
||||||
|
|
||||||
|
여러 리포지토리를 동시에 관리하려면 워크스페이스 파일을 생성하세요:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"name": "Main Repository",
|
||||||
|
"path": "."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "New Project",
|
||||||
|
"path": "./new-project-folder"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"git.enableSmartCommit": true,
|
||||||
|
"git.confirmSync": false,
|
||||||
|
"git.autofetch": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚨 문제 해결
|
||||||
|
|
||||||
|
### 1. 인증 실패
|
||||||
|
```bash
|
||||||
|
# 토큰이 만료된 경우, 새 토큰으로 원격 URL 업데이트
|
||||||
|
git remote set-url origin https://thug0bin:NEW_TOKEN@git.0bin.in/thug0bin/repo-name.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 푸시 거부
|
||||||
|
```bash
|
||||||
|
# 원격 변경사항을 먼저 가져오기
|
||||||
|
git pull origin main --rebase
|
||||||
|
|
||||||
|
# 충돌 해결 후 푸시
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 대용량 파일 문제
|
||||||
|
```bash
|
||||||
|
# Git LFS 설정 (필요시)
|
||||||
|
git lfs install
|
||||||
|
git lfs track "*.zip"
|
||||||
|
git lfs track "*.gz"
|
||||||
|
git add .gitattributes
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 커밋 메시지 템플릿
|
||||||
|
|
||||||
|
### 기본 템플릿:
|
||||||
|
```
|
||||||
|
타입: 간단한 설명
|
||||||
|
|
||||||
|
상세한 설명 (선택사항)
|
||||||
|
|
||||||
|
🤖 Generated with [Claude Code](https://claude.ai/code)
|
||||||
|
|
||||||
|
Co-Authored-By: Claude <noreply@anthropic.com>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 타입별 예시:
|
||||||
|
- `✨ feat: 새로운 기능 추가`
|
||||||
|
- `🐛 fix: 버그 수정`
|
||||||
|
- `📝 docs: 문서 업데이트`
|
||||||
|
- `🎨 style: 코드 포맷팅`
|
||||||
|
- `♻️ refactor: 코드 리팩토링`
|
||||||
|
- `⚡ perf: 성능 개선`
|
||||||
|
|
||||||
|
- `✅ test: 테스트 추가`
|
||||||
|
- `🔧 chore: 빌드 설정 변경`
|
||||||
|
|
||||||
|
## 🔗 유용한 링크
|
||||||
|
|
||||||
|
- **Gitea 웹 인터페이스**: https://git.0bin.in/
|
||||||
|
- **내 리포지토리 목록**: https://git.0bin.in/thug0bin
|
||||||
|
- **새 리포지토리 생성**: https://git.0bin.in/repo/create
|
||||||
|
|
||||||
|
## 💡 팁과 모범 사례
|
||||||
|
|
||||||
|
1. **정기적인 커밋**: 작은 단위로 자주 커밋
|
||||||
|
하세요
|
||||||
|
2. **의미있는 커밋 메시지**: 변경 사항을 명확히 설명하세요
|
||||||
|
3. **브랜치 활용**: 기능별로 브랜치를 나누어 작업하세요
|
||||||
|
4. **.gitignore 활용**: 불필요한 파일은 제외하세요
|
||||||
|
5. **문서화**: README.md와 같은 문서를 항상 업데이트하세요
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**작성일**: 2025년 7월 29일
|
||||||
|
**마지막 업데이트**: 토큰 및 서버 정보 최신화
|
||||||
|
**참고**: 이 가이드는 재사용 가능하도록 작성되었습니다. 새 프로젝트마다 참고하세요.
|
||||||
|
|
||||||
|
> 💡 **중요**: 액세스 토큰은 보안이 중요한 정보입니다. 공개 저장소에 업로드하지 마세요!
|
||||||
BIN
linux-brprinter-installer-2.2.6-0.gz
Normal file
BIN
linux-brprinter-installer-2.2.6-0.gz
Normal file
Binary file not shown.
54
rpi_com_redirect.md
Normal file
54
rpi_com_redirect.md
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
라즈베리파이 컴포트 리다이렉트
|
||||||
|
|
||||||
|
|
||||||
|
pi@raspberrypi:~ $
|
||||||
|
pi@raspberrypi:~ $ cat /home/pi/rdp-start.sh
|
||||||
|
#!/bin/sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# ---- USB-Serial 자동 탐색 ----
|
||||||
|
DEV=""
|
||||||
|
for CAND in /dev/ttyACM* /dev/ttyUSB*; do
|
||||||
|
[ -e "$CAND" ] && DEV="$CAND" && break
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$DEV" ]; then
|
||||||
|
echo "[RDP-START] serial redirect: $DEV -> COM3"
|
||||||
|
SERIAL_OPT="/serial:COM3,${DEV},Serial"
|
||||||
|
else
|
||||||
|
echo "[RDP-START] WARNING: no /dev/ttyACM* or /dev/ttyUSB* found; skipping serial redirect"
|
||||||
|
SERIAL_OPT=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---- 경량 WM + 화면 절전 방지 ----
|
||||||
|
openbox-session >/dev/null 2>&1 &
|
||||||
|
xset s off
|
||||||
|
xset -dpms
|
||||||
|
xset s noblank
|
||||||
|
setxkbmap us || true
|
||||||
|
|
||||||
|
# ---- 접속 기본값 ----
|
||||||
|
SIZE="1920x1080"
|
||||||
|
BPP="16"
|
||||||
|
SRV="pharmq.kr:7390"
|
||||||
|
USR="pqserver"
|
||||||
|
PW="pharmq119"
|
||||||
|
|
||||||
|
# ---- 성능 최적화 (윈도우 UI 효과 제거) ----
|
||||||
|
PERF="-wallpaper -themes -menu-anims -window-drag"
|
||||||
|
|
||||||
|
# ---- FreeRDP 공통 옵션 ----
|
||||||
|
BASE="/u:${USR} /p:${PW} /v:${SRV} \
|
||||||
|
/size:${SIZE} /bpp:${BPP} /clipboard /cert:ignore \
|
||||||
|
/compression /network:lan ${PERF} /log-level:INFO"
|
||||||
|
|
||||||
|
# ---- 코덱 순차 시도 ----
|
||||||
|
for MODE in "/gfx:avc420" "/gfx" "/rfx" ""; do
|
||||||
|
LABEL="${MODE:-bitmap}"
|
||||||
|
echo "[RDP-START] trying: xfreerdp3 ${LABEL}"
|
||||||
|
if xfreerdp3 $BASE $SERIAL_OPT $MODE; then
|
||||||
|
echo "[RDP-START] connected with: ${LABEL}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
88
sync.md
Normal file
88
sync.md
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
# 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
|
||||||
55
삼바마운트.md
Normal file
55
삼바마운트.md
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
좋습니다 👍 지금 상황은 단순해요.
|
||||||
|
/etc/samba/ 폴더가 기본적으로 없는 경우가 있습니다. 그래서 nano에서 파일을 열려고 하면 "그런 파일이나 디렉터리가 없습니다" 라는 메시지가 나옵니다.
|
||||||
|
|
||||||
|
해결 방법
|
||||||
|
먼저 디렉터리를 만들어주세요:
|
||||||
|
|
||||||
|
sudo mkdir -p /etc/samba
|
||||||
|
그다음 다시 자격증명 파일을 여세요:
|
||||||
|
|
||||||
|
sudo nano /etc/samba/creds-fax
|
||||||
|
그리고 안에 다음을 입력합니다:
|
||||||
|
|
||||||
|
username=0bin
|
||||||
|
password=@Trajet6640
|
||||||
|
저장 후 나와서 권한 제한:
|
||||||
|
|
||||||
|
sudo chmod 600 /etc/samba/creds-fax
|
||||||
|
✅ 이렇게 하면 /etc/samba/creds-fax 파일이 생기고, systemd에서 마운트 설정할 때 사용할 수 있어요.
|
||||||
|
|
||||||
|
👉 원하시면 제가 바로 /etc/systemd/system/mnt-fax.mount 유닛까지 한방팩으로 작성해드릴까요?
|
||||||
|
|
||||||
|
나의 말:
|
||||||
|
이제됫어 다음은 어떻게해 크리덴셜파일까지 생성해성
|
||||||
|
ChatGPT의 말:
|
||||||
|
좋습니다 👌 이제 크리덴셜 파일까지 잘 만들었으니, 다음은 systemd 마운트 유닛을 만들어서 라즈베리파이가 켜질 때 자동으로 \\192.168.0.211\fax 를 /mnt/fax 로 마운트되도록 하면 됩니다.
|
||||||
|
|
||||||
|
1. 마운트할 디렉터리 만들기
|
||||||
|
sudo mkdir -p /mnt/fax
|
||||||
|
2. systemd 마운트 유닛 작성
|
||||||
|
/etc/systemd/system/mnt-fax.mount 파일 생성:
|
||||||
|
|
||||||
|
sudo nano /etc/systemd/system/mnt-fax.mount
|
||||||
|
내용 입력:
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=Mount SMB Share for Fax
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Mount]
|
||||||
|
What=//192.168.0.211/fax
|
||||||
|
Where=/mnt/fax
|
||||||
|
Type=cifs
|
||||||
|
Options=credentials=/etc/samba/creds-fax,iocharset=utf8,vers=3.0,uid=pi,gid=pi,file_mode=0660,dir_mode=0770
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
3. systemd 리로드 & 마운트
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable mnt-fax.mount
|
||||||
|
sudo systemctl start mnt-fax.mount
|
||||||
|
4. 확인
|
||||||
|
mount | grep fax
|
||||||
|
ls -l /mnt/fax
|
||||||
|
여기까지 하면 SMB 공유가 자동으로 /mnt/fax 에 마운트돼요.
|
||||||
Loading…
Reference in New Issue
Block a user