2021-01-10
Crontab으로 매일 스크린샷 관리하기
환경
macOS + zsh
Google Drive File Stream (무제한 용량)
목적
macOS 용량 부족
찍은 스크린샷이나 동영상 보관
하루마다 스크린샷 폴더에 파일이 쌓이는 것 방지
Dock에서 바로 사용할 수 있게 관리
스크린샷 설정
- 스크린샷의 저장 위치를 구글 드라이브 파일 스트림의 특정 폴더로 지정
쉘 스크립트
screenshots 폴더에 파일이 있으면
모두 prev-screenshots로 복사한다.
screenshots 폴더의 파일을 모두 지운다 (지울 때 confirm [y/n] 메시지 띄우지않게 옵션 설정)
없으면 에코
~/scripts/mv_screenshots.sh
bash
#!/bin/zsh
target=/Volumes/GoogleDrive/내\ 드라이브/이미지/screenshots
archive=/Volumes/GoogleDrive/내\ 드라이브/이미지/prev-screenshots
if find "$target" -mindepth 1 -print -quit 2>/dev/null | grep -q .; then
setopt localoptions rmstarsilent
cp -R "$target" "$archive/`date +\%Y-\%m-\%d`"
rm "$target"/*
else
echo "Target '$target' is empty"
fi
#!/bin/zsh
target=/Volumes/GoogleDrive/내\ 드라이브/이미지/screenshots
archive=/Volumes/GoogleDrive/내\ 드라이브/이미지/prev-screenshots
if find "$target" -mindepth 1 -print -quit 2>/dev/null | grep -q .; then
setopt localoptions rmstarsilent
cp -R "$target" "$archive/`date +\%Y-\%m-\%d`"
rm "$target"/*
else
echo "Target '$target' is empty"
fi
Bash checking if folder has contents
Why does rm -f ask me for confirmation on zsh?
크론탭 설정
- 매일 오후 11:30에 쉘 스크립트를 실행하고 실행한 결과를 당일의 로그 파일로 기록한다.
crontab -e
bash
30 23 * * * zsh ~/scripts/mv_screenshots.sh >> ~/log/job_`date +\%Y-\%m-\%d`.log 2>&1
30 23 * * * zsh ~/scripts/mv_screenshots.sh >> ~/log/job_`date +\%Y-\%m-\%d`.log 2>&1