백업을 원하는 특정폴더를 cron을 이용하여 정해진 시간에 백업후 rclone을 통해 분산 백업 하는 내용

sudo tar -cvzf [백업파일이 생성될 경로, 백업을 원하는 폴더의 상대경로]_$(date +%y%m%d%H%M).tgz --exclude "*.log"  /[백업을 원하는 경로]/

예 ) sudo tar -cvzf backup_des_$(date +%y%m%d%H%M).tgz --exclude "*.log"  /backup/

tar : ubuntu 압축 프로그램
 - 옵션 : c(파일묶음), v(처리과정출력), z(gzip압축), f(tar 대상 지정)

$(date +%y%m%d%H%M) : 압축파일 생성 시간 파일명 뒤에 붙임

--exclude : 압축을 원하지 않는 폴더 지정
 - *.log(.log로 끝나는 모든 파일 제외), 백업파일이 저장될 폴더 제외 등

위의 local backup 스크립트를 sh로 저장

[rev_backup.sh]
#!/bin/bash
sudo tar -cvzf backup_des_$(date +%y%m%d%H%M).tgz --exclude "*.log"  /backup/

 

이후 rclone을 활용하여 백업 수행 토록 설정

local에 직접 rclone을 설치하여 실행 하여도 좋고, docker를 활용하는 방법도 있음

이글에서는 docker를 활용한 rclone 백업을 안내

[rev_rclone_backup.yaml]

version: '3'
services:
  rclone_bk:
    container_name: rclone_bakcup
    image: 'rclone/rclone:latest'
    restart: unless-stopped
    privileged: true
    devices:
      - /dev/fuse
    cap_add:
      - SYS_ADMIN
    volumes:
      - /docker/rclone/config:/config
      - /docker/rclone/log:/log
      - /docker/rclone/cache:/cache
      - /docker/rclone/data:/data:shared
      - /docker/rclone/local:/local
    command:
      move [/백업대상폴더경로] [백업파일이저장될 목적지 경로] --config /config/rclone/rclone.conf --log-level INFO --stats 1s --stats-file-name-length 0 --transfers=4 --checkers=8 --delete-empty-src-dirs --create-empty-src-dirs --delete-after --drive-chunk-size=256M

rclone 공식 홈페이지에서 제공하는 docker이미지를 활용한 docker-compose 구문으로, 
command 행에 백업 파일이 분산될 대상을 지정하는 옵션을 적절히 지정 하면 됨

로컬에 백업파일이 남아 있을 필요는 없으므로 move를 통해 업로드 함

backup, rclone 업로드 자동화

crontab을 활용하여 매일 지정된 시간에 백업 및 업로드 수행

매일 23시 백업 및 Rclone을 통해 업로드

0 23 * * * /bin/bash /rev_docker_backup.sh && /usr/bin/docker-compose -f rev_backup_rclone.yaml run rclone_bk

 

'IT' 카테고리의 다른 글

google play search issue(구글 플레이 오류)  (0) 2022.09.18
Speedtest ubuntu 설치시 apt 오류 해결법  (0) 2022.08.06
exiftool 사용법 (구글포토)  (0) 2022.07.13
GeoIP for Ubuntu  (0) 2022.07.13
linux bandwith limit  (0) 2022.07.13

+ Recent posts