GNU Tar 을 이용해 백업하기

This entry is part 42 of 48 in the series FreeNAS 서버 만들기

백업은 무슨 일을 하던지 간에 가장 중요한 일 중 하나입니다. 특히 NAS 를 운영할 때는 더욱 그러하죠. 스냅샷으로 어느정도 해결이 가능하긴 하지만, 백업 중 하나 이상은 반드시 서버 외부에 위치하여야 합니다. 그래야 서버에 큰 문제가 발생하였을 경우에도 복구할 수 있기 때문입니다.

그런데 이는 쉽지 않은 일입니다. 어덯게 파일을 백업할지부터 문제이고, 백업할 파일이 많다면 그것을 모두 백업하려 했다간 비용이 너무 많이 들 것이고, 더 근본적으로 어디다가 백업할지도 문제입니다.

그래서 이번 포스팅에서는 이것을 해결해보고자 합니다.

GNU Tar 을 이용해 증분 백업을 수행하고,

Rclone 을 이용해 Backblaze 에 백업을 저장할 것입니다.

데이터셋 만들기

Temp/backup_temp

백업 파일이 임시로 저장될 데이터셋입니다.

Data/Persnal/bk_usr

bk_usr 라는 백업을 수행할 유저의 홈 디렉토리입니다.

System/data/script

스크립트를 저장할 데이터셋입니다.

증분백업

일반적으로 백업은 백업할 데이터 ‘전체’ 를 백업하는 것으로 이루어집니다. 이 방식은 백업과 복구가 쉽다는 장점은 있으나, 백업할 데이터가 많아 백업에 소요되는 비용이 많다는 단점이 있습니다.

그래서 백업을 할 때, ‘변경된’ 데이터만 백업할 수 있다면 백업할 데이터를 줄일 수 있을 것입니다. 이를 증분 백업이라 합니다.

본 포스팅에서는 1달 주기로 전체 백업을, 1주일 주기로 증분 백업을 수행할 것입니다.

GNU Tar

증분 백업을 검색해 보면 Tar 로 증분 백업을 할 수 있다는 내용이 검색됩니다. 실제로 Tar 로 증분 백업이 가능하고, 편리하며, 강력합니다. 그런데 문제가 있습니다. 이것은 GNU Tar 에 해당되는 내용이고, FreeBSD 에 설치된 Tar 은 BSD Tar 이라는 것입니다.  그리고 BSD Tar 은 증분 백업이 불가능합니다.

하지만 문제 없죠. Jail 에 GNU Tar 을 설치하면 그만이니깐요. 백업을 수행할 Jail을 만들어 그곳에 GNU Tar 을 설치할 것입니다.

Jail 설정

Jail 만들기

Jail 이름은 Backup_Tar

네트워크는 아무렇게나 잡아 주셔도 됩니다. DHCP 로 구성하셔도 됩니다.

마운트 포인트

백업이 필요한 파일들이 있는 디렉토리를 마운트 해 주겠습니다.

iocage console Backup_Tar

감옥에 로그인 해 주신 후

mkdir -p /mnt/persnal/admion

admion 유저의 개인 디렉토리가 마운트 될 디렉토리와

mkdir -p /mnt/picture

사진을 백업한다고 가정하고, 사진이 마운트 될 디렉토리를 만들고

mkdir -p /mnt/backup_temp

Tar 로 묶은 데이터들이 저장될 임시 디렉토리를 만들었습니다.

exit

감옥에서 나가 주고

iocage stop Backup_Tar

감옥을 정지해 줍니다.

/mnt/Data/persnal/admion/mnt/persnal/admion

/mnt/Data/Media/Picture/mnt/picture

/mnt/Temp/backup_temp/mnt/backup_temp

마운트 해 줍니다.

GNU Tar 설치

iocage console Backup_Tar

감옥에 로그인 해 주신 후

pkg install gnutar

GNU Tar 을 설치하였습니다. BSD Tartar 명령을 이용하고, GNU Targtar 명령을 사용합니다.

암호 파일 만들기

mkdir /root/.passwd

암호가 저장될 디렉토리를 만듭니다.

vi /root/.passwd/.password

암호를 작성해 줍니다.

chmod -R 400 /root/.passwd

암호가 저장된 디렉토리와 파일을 모두 root 만 읽을 수 있도록 읽기 전용으로 만들었습니다. 이 암호 파일은 백업 파일을 암호화하는데 사용됩니다. 암호를 분실할 경우 백업한 파일의 복구가 불가능하니 잘 저장해 두시길 바랍니다.

백업 설명

증분 백업

GNU Tar 을 이용해서 증분 백업을 하기 위해선

gtar -g 스냅샷_파일 -czvf Backup.tar.gz target/

형태의 명령을 사용합니다. 이때 스냅샷_파일 에 백업할 대상의 파일이나 디렉토리의 정보를 저장하는데, 이후에 백업을 할 때, 스냅샷_파일 을 참조해 과거와 달라진 것이 있다면 그 부분만 묶게 됩니다.

절대 경로 문제

Tar 을 이용해 백업할 경우 경로 문제가 생깁니다. 예를 들어 /home/usr/asdf/blabla/ 에서 blabla/ 를 백업하려 한다고 할 때,

gtar -g list -czvf Backup.tar.gz /home/usr/asdf/blabla/

위 명령어를 이용할 경우, 백업시 절대 경로를 사용하게 되어, 복구시 blabla/ 라는 디렉토리가 생기는게 아니라, /home/usr/asdf/blabla/ 라는 디렉토리가 만들어지게 됩니다.

이를 해결하기 위해 tar 에는 -C 옵션이 있습니다. -C 옵션은 백업을 하기 전에 -C 뒤에 붙은 경로로 이동하는 옵션입니다.

gtar -g list -czvf Backup.tar.gz -C /home/usr/asdf/ blabla/

위와 같은 명령어를 사용할 경우, 백업을 수행하기 전 /home/usr/asdf/으로 이동한 다음, blabla/ 을 백업하게 됩니다. 즉, 상대 경로를 사용하기 때문에 경로 문제가 발생하지 않습니다.

권한 문제

tar 으로 묶을 시, 권한이 날아간다는 문제가 있습니다. 권한까지 유지하기 위해선 -p 옵션을 주면 됩니다.

gtar -g list -czvfp Backup.tar.gz -C /home/usr/asdf/ blabla/

p 옵션이 붙어 권한도 함께 백업합니다.

암호화

백업하기 전에 암호화를 한 뒤 백업하면 보안상 좋을 것입니다. 누군가가 백업 파일에 접근한다 해도 백업 파일을 읽을 수가 없어 안전하겠지요.

후술할 rclone 으로도 암호화가 가능하긴 합니다만, rclone 동작 속도를 높이기 위해 미리 암호화를 하도록 하겠습니다.

gtar -g list -cvzpf - -C /home/usr/asdf/ blabla/ | openssl enc -aes-256-cbc -salt -e -a -out Backup.tar.gz.aes -pass file:passwordfile

gtar 으로 묶음과 동시에 openssl으로 aes-256-cbc 암호화를 수행합니다.

누군가가 암호화된 백업 파일에 접근한다 해도 passwordfile 에 저장된 비밀번호를 알지 못한다면 열어 볼 수 없습니다.

백업 스크립트 짜기

감옥 안에서 동작할 백업 스크립트를 만들겠습니다.

mkdir -p /usr/local/backup/list

스냅샷 파일이 저장될 디렉토리를 만들었습니다.

vi /usr/local/backup/backup.sh

#!/bin/sh

bkname="backup_incremetal_"${3}
snaploc="/usr/local/backup/list"

if [ "${6}" == "-f" ]; then
    bkname="full_backup_"${3}

    rm "${5}/${3}_old.snap.aes"
    openssl aes-256-cbc -salt -k `cat "${4}"` -in "${snaploc}/${3}.snap" -out "${5}/${3}_old.snap.aes"
    rm "${snaploc}/${3}.snap"
fi

gtar -g "${snaploc}/${3}.snap" -cvzpf - -C "${1}" "${2}" | openssl aes-256-cbc -salt -k `cat "${4}"` -out "${5}/${bkname}.tar.gz.aes"

스크립트를 아주 대충(…) 짜 보았습니다. 허접하지만 일은 잘 합니다.

backup.sh (백업할 디렉토리의 상위 경로) (백업할 디렉토리) (백업의 이름) (비밀번호 파일) (백업을 저장할 디렉토리 경로) (전체 백업을 수행할시 -f)

예시를 들어 보겠습니다. /mnt/chroot/persnal/admion 을 백업하려면

전체 백업

backup.sh /mnt/persnal admion/ Admion_persnal /root/.passwd/.password /mnt/backup_temp -f

증분 백업

backup.sh /mnt/persnal admion/ Admion_persnal /root/.passwd/.password /mnt/backup_temp

MariaDB 백업

MariaDB 백업도 위와 비슷한 방법으로 하면 됩니다. 하지만 DB를 백업하는 건 일반 파일을 백업하는 것과는 조금 다르겠죠.

마운트 포인트

exit

감옥 안에 있다면 나와 주세요.

iocage exec MariaDB mkdir /mnt/dump

백업한 파일이 임시로 저장될 디렉토리를 만들었습니다.

iocage stop MariaDB

감옥을 정지시켜 주고

/mnt/Temp/backup_temp/mnt/dump

마운트 해 주세요.

mysqldump

mariadb 는 mysqldump 라는 기능을 지원합니다. 말 그대로 sql을 덤프 뜨는 기능이죠.

iocage console MariaDB

MariaDB 감옥으로 로그인 해 주세요.

vi /root/.my.cnf

mysqldump 가 사용할 계정 파일을 만들겠습니다.

[mysqldump]
default-character-set = utf8mb4
user=root
password=MariaDB의 Root 비밀번호

저장해 주고

chmod 400 /root/.my.cnf

root 만 읽을 수 있도록 설정해줍니다.

mysqldump -u root --single-transaction -A > dump.sql

mysqldump 로 모든 DB 를 백업하기 위해선 위 명령어를 사용합니다.

-u root

mysql 의 root 계정으로

–single-transaction

sql 의 백업에 일관성이 있게 트랜잭션을 잠그고

-A

모든 데이터베이스를 백업합니다.

이 명령을 실행하면 dump.sql 이라는 sql 덤프 파일이 만들어집니다.

vi /root/.passwd

sql 덤프 파일을 암호화하기 위한 암호 파일을 작성해 줍니다.

chmod 400 /root/.passwd

root 만 읽을 수 있도록 설정해 줍니다.

덤프를 뜨는 동시에 압축과 암호화를 진행하기 위해서는

mysqldump -u root --single-transaction -A | gzip -9 | openssl enc -aes-256-cbc -salt -a -out dump.sql.gz.aes -pass file:/root/.passwd"

mysqldump 로 덤프 뜬 sql 파일을 gzip9 수준으로 암호화하고, /root/.passwd 파일을 이용해 aes-256-cbc 으로 암호화해서 dump.sql.gz.aes 로 저장합니다.

Backblaze

백블레이즈는 데이터 저장 사업을 하는 회사입니다. 컴퓨터 백업이라는 윈도우나 맥 시스템 전체를 미러링하는 솔루션과, B2라는 아마존의 S3와 동일한 기능을 하는 솔루션을 제공합니다. 이 중 B2 가 백블레이즈의 주요 사업 아이템인데, S3와 비슷한 기능을 하는 무제한 저장 공간을 제공하는데 1Gb 당 0.005 달러라는 엄청난 염가에 저장 공간을 제공합니다. 거기다 신뢰성과 안정성이 매우 높은 백업 전문 회사라 믿을만 하지요.

1Tb 를 저장해도 5$, 대략 6천원이니 백업 용도로는 극도로 저렴하죠. 사실 영화 같은 미디어 파일을 백업하지 않는 이상 개인 파일으로 1Tb 채우는것도 그리 쉽진 않을 듯 합니다.

가입

https://www.backblaze.com/b2/sign-up.html

위 링크에서 Backblaze 에 가입할 수 있습니다. 가입하고 나면 별도의 인증 과정 없이 바로 개인 설정 페이지로 넘어갑니다. 그곳에서 전화번호를 이용해 인증을 받고, 보안 설정 등을 한 다음, 지불 설정 (카드나 Paypal 등을 이용) 을 하면 기본 설정은 끝납니다.

버킷 만들기

Backblaze 는 데이터를 ‘버킷‘ 이라는 단위로 보관합니다. 버킷은 말 그대로 데이터가 저장되는 바구니라고 생각하면 됩니다. 그 안에 데이터가 저장되는 것이지요.

개인 페이지의 B2 Cloud Storage – Buckets 에서 새 버킷을 만들 수 있습니다.

이름은 Admion-NAS-Backup 으로 하겠습니다.

Life Cycle

Bucket 은 수명 주기를 설정할 수 있습니다. 기본값은 버킷에 같은 이름의 파일 여러 개가 존재할 경우, 해당 파일을 ‘모두’ 보존합니다. 버킷의  Lifecycle Settings 에서 수정이 가능합니다.

Keep prior versions for this number of days : 100 으로 설정하겠습니다. 이렇게 할 경우 100일동안의 파일 버전이 보존됩니다. (파일 ‘버전’ 이 보존되는 것이라 가장 최신 버전의 파일은 100일이 넘어도 보존됩니다.)

App Key 만들기

BackBlaze 로 백업을 할 때 버킷에 접근할 권한이 있어야 할 것입니다. CloudFlare 에서 하였던 것 처럼 계정의 Key 를 사용할 수도 있겠지만, 그보다 더 좋은 방법이 있습니다. 바로 App Key 입니다. 어플리케이션 키를 이용하면 특정 버킷에만 접근할 수 있도록 제한할 수 있습니다.

B2 Cloud Storage – App Key 로 이동해 Add a New Application Key 를 눌러 새로운 키를 만들 수 있습니다.

Key의 이름Backup_app_key

Allow access to BucketAdmion-NAS-Backup

Read and Write

나머지는 비워 둡니다.

그 후 생성하면  keyIDApp Key 가 표시됩니다. 이 중 App Key는 단 한번만 표시되고, 잃어버릴 시 재발급해야 하니 잘 메모해 두시길 바랍니다.

Rclone

Rclone 은 Rsync 의 클라우드 버전입니다. 구글 클라우드, 아마존 클라우드, backblaze 등 클라우드의 파일을 다루는데 특화되어 있으며, FreeNAS 에 설치되어 있습니다.

사실 FreeNAS 의 WebUI 에서 Cloud Sync 라는 기능을 이용해 백업이 가능하긴 합니다. 하지만 문제가 몇가지 있습니다. BackBlaze 의 글로벌ID와 Key를 요구하기 때문에 좀 껄끄럽다는 점과, 속도가 미칠듯이 느리다는 점 (600kb~1.5mb 정도), 그리고 트랜젝션을 왕창 발생시켜서 요금이 많이 나오게 한다는 점입니다.

사실 계정과 Key를 요구하는 것과 속도가 느리다는 것은 참을 수 있습니다. 속도가 느려도 NAS 는 24시간 돌아가니 언젠가는 다 올라가겠죠. 하지만 트랜젝션을 많이 발생시키는 것은 참을 수가 없습니다. 이게 얼마나 심각하냐면, 저장한 데이터 양만 보면 0.12$ 가 나와야 할 상황인데, 과도한 트랜젝션이 발생해 0.8$ 가 결제되는 겁니다. 이는 심각한 문제입니다.

그래서 WebUI 의 Cloud Sync 를 사용하는 대신, rclone 스크립트를 직접 짜서 백업을 수행할 것입니다.

백업을 수행할 유저 만들기

SFTP 감옥 안에서야 격리된 환경이니 root 권한으로 tar 을 실행해도 별 문제 없지만,  freenas 호스트에서는 rclone 을 root 로 실행하는 것은 그다지 권장할 만한 방법은 아닙니다. 백업을 수행할 유저를 만들도록 하겠습니다.

유저 만들기

이름은 bk_usr,

uid는 3005,

홈 디렉토리는 /mnt/Data/Persnal/bk_usr,

쉘은 bash,

disable password login 체크.

로그인 불가능한 bk_usr 를 만들었습니다.

Rclon 설정 파일 만들기

exit

만약 감옥 안에 있다면 감옥에서 로그아웃 해 줍니다.

su bk_usr

bk_usr 의 쉘로 접속하였습니다. 이제 bk_usr 권한으로 명령어가 실행됩니다.

rclone config

rclone 의 설정 파일을 만듭니다.

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n

새로운 설정을 만듭니다.

name> backblaze_backup

이름은 backblaze_backup

Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / A stackable unification remote, which can appear to merge the contents of several remotes
   \ "union"
(...)
 5 / Backblaze B2
   \ "b2"
(...)
26 / http Connection
   \ "http"
Storage> 5

다양한 저장소를 지원합니다. 그 중 backblaze 를 이용할 것이므로 5 번 backblaze b2 를 선택합니다.

Account ID or Application Key ID
Enter a string value. Press Enter for the default ("").
account> 00114a2b623c1d192o3200002
Application Key
Enter a string value. Press Enter for the default ("").
key> 3accasdQc234x45vc/3c5/3c5asdfZx

앞서 생성한 key id 와 key 를 입력합니다.

Permanently delete files on remote removal, otherwise hide files.
Enter a boolean value (true or false). Press Enter for the default ("false").
hard_delete>

hard_delete 를 설정하지 않습니다. false 를 입력하거나 그냥 엔터를 칩니다.

Edit advanced config? (y/n)
y) Yes
n) No
y/n> y

고급 설정을 수정할지 묻습니다. 예 y

Endpoint for the service.
Leave blank normally.
Enter a string value. Press Enter for the default ("").
endpoint>

엔드포인트를 설정하지 않습니다. 엔터.

A flag string for X-Bz-Test-Mode header for debugging.

This is for debugging purposes only. Setting it to one of the strings
below will cause b2 to return specific errors:

  * "fail_some_uploads"
  * "expire_some_account_authorization_tokens"
  * "force_cap_exceeded"

These will be set in the "X-Bz-Test-Mode" header which is documented
in the [b2 integrations checklist](https://www.backblaze.com/b2/docs/integration_checklist.html).
Enter a string value. Press Enter for the default ("").
test_mode>

테스트 모드를 사용하지 않습니다. 엔터.

Include old versions in directory listings.
Note that when using this no file write operations are permitted,
so you can't upload files or delete them.
Enter a boolean value (true or false). Press Enter for the default ("false").
versions>

이전 버전을 포함하지 않습니다. 엔터.

Cutoff for switching to chunked upload.

Files above this size will be uploaded in chunks of "--b2-chunk-size".

This value should be set no larger than 4.657GiB (== 5GB).
Enter a size with suffix k,M,G,T. Press Enter for the default ("200M").
upload_cutoff> 1G

200M 이상의 파일은 잘라서 보낸다는 설정입니다. 더 크거나 작게 설정할 수 있습니다. 1Gb로 설정하겠습니다. 1Gb 이상의 파일은 잘라서 보냅니다.

Upload chunk size. Must fit in memory.

When uploading large files, chunk the file into this size.  Note that
these chunks are buffered in memory and there might a maximum of
"--transfers" chunks in progress at once.  5,000,000 Bytes is the
minimim size.
Enter a size with suffix k,M,G,T. Press Enter for the default ("96M").
chunk_size> 30M

청크 사이즈를 설정합니다. 96Mb 가 기본 설정인데, 30Mb 로 낮추었습니다. 다중 전송 개수 * 청크 사이즈 만큼의 크기가 메모리에 저장되는데, 청크 사이즈가 30Mb 일때, 32개의 전송을 동시에 하게 되면 960Mb 의 메모리가 사용됩니다. 메모리가 넉넉하다면 청크 사이즈를 좀 더 올려도 무방합니다.

Remote config
--------------------
[backblaze_backup]
type = b2
account = 00114a2b623c1d192o3200002
key = 3accasdQc234x45vc/3c5/3c5asdfZx
chunk_size = 30M
upload_cutoff = 1G
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

설정을 확인합니다. 올바르게 설정하였으니 y를 눌러 저장합니다.

Current remotes:

Name                 Type
====                 ====
backblaze_backup     b2

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

모두 설정하였으니 q를 눌러 빠져나옵니다.

exit

bk_usr 의 쉘에서 빠져나왔습니다.

백업 방법

이제 rclone 으로 백업이 가능합니다.

su bk_usr -c 'rclone --fast-list --transfers 32 move /mnt/Temp/backup_temp/ backblaze_backup:Admion-NAS-Backup'

–fast-list 옵션을 이용하면 메모리를 좀더 사용하는 대신에 트랜젝션을 줄일 수 있습니다.

–transfer 32 옵션을 이용하면 32 개의 연결을 이용해 동시에 업로드하여 속도를 높일 수 있습니다. (청크 사이즈) * (전송 개수) 만큼의 메모리를 사용합니다.

move 옵션으로 /mnt/Temp/backup_temp 에 있는 파일을 Backblaze 로 옮깁니다.

작업 우선순위

백업은 중요하지만 ‘실시간’ 으로 해야 하는 작업은 아닙니다. 낮은 우선순위로 백업 프로세스가 동작하게 해 주면 CPU 를 사용해야 하는 다른 프로세스에 영향을 덜 주면서 백업이 가능할 것입니다.

nice 라는 명령어로 그렇게 할 수 있습니다. nice 는 설정한 우선순위로 프로세스를 실행하는 명령어인데, 기본은 0 이고, 최고 우선순위는 -20 이며 최저 우선순위는 20 입니다.

즉 명령어를 20 정도의 우선순위로 실행해 주면 최저 우선순위에서 동작합니다.

nice -n 20 echo asdf

20 우선순위로 echo asdf 명령어를 실행합니다.

  • 참고. 특정 우선순위로 어떠한 프로그램을 실행할 경우, 그 프로그램이 실행한 프로그램 또한 같은 우선순위를 가집니다.
  • 참고. tcsh 나 csh 쉘에서는 nice 명령어를 사용할 수 없습니다.
  • 참고. PLEX Media Server 의 트랜스코딩이나 스캐닝 작업 등도 최하위 우선순위로 동작합니다.

전체 스크립트

백업 시에 MariaDB 를 함께 백업하도록 하겠습니다.

증분 백업

vi /mnt/System/data/script/incremetal_backup.sh

#!/bin/bash

#admion 유저 증분백업
nice -n 20 iocage exec Backup_Tar 'backup.sh /mnt/persnal admion/ Admion_persnal_incremetal_backup /root/.passwd/.password /mnt/backup_temp'

#사진 증분백업
nice -n 20 iocage exec Backup_Tar 'backup.sh /mnt picture/ picture_incremetal_backup /root/.passwd/.password /mnt/backup_temp'

#MariaDB 백업
nice -n 20 iocage exec MariaDB "mysqldump -u root --single-transaction -A | gzip -9 | openssl enc -aes-256-cbc -salt -a -out /mnt/dump/dump.sql.gz.aes -pass file:/root/.passwd"

chown -R bk_usr:bk_usr /mnt/Temp/backup_temp

su bk_usr -c 'nice -n 20 rclone --fast-list --transfers 32 move /mnt/Temp/backup_temp/ backblaze_backup:Admion-NAS-Backup'

전체 백업

vi /mnt/System/data/script/full_backup.sh

#!/bin/bash

#admion 유저 전체백업
nice -n 20 iocage exec Backup_Tar 'backup.sh /mnt/persnal admion/ Admion_persnal_full_backup /root/.passwd/.password /mnt/backup_temp -f'

#사진 전체백업
nice -n 20 iocage exec Backup_Tar 'backup.sh /mnt picture/ picture_full_backup /root/.passwd/.password /mnt/backup_temp -f'

#MariaDB 백업
nice -n 20 iocage exec MariaDB "mysqldump -u root --single-transaction -A | gzip -9 | openssl enc -aes-256-cbc -salt -a -out /mnt/dump/dump.sql.gz.aes -pass file:/root/.passwd"

chown -R bk_usr:bk_usr /mnt/Temp/backup_temp

su bk_usr -c 'nice -n 20 rclone --fast-list --transfers 32 move /mnt/Temp/backup_temp/ backblaze_backup:Admion-NAS-Backup'

우아한 접근 방법은 아닙니다. 하지만 편하죠. 오류가 발생할 염려도 없구요.

  1. 최저 우선순위로 유저의 백업을 실행하고
  2. 최저 우선순위로 사진을 백업하고
  3. MariaDB 의 덤프를 뜬 후
  4. 덤프를 뜬 파일의 소유권을 bk_usr:bk_usr 으로 설정해 bk_usr 가 rclone 으로 백업을 할 수 있도록 한 다음,
  5. bk_usr 의 권한으로 최저 우선순위로 rclone 을 실행해 Backblaze 로 전송합니다.

chmod 550 /mnt/System/data/script/full_backup.sh /mnt/System/data/script/incremetal_backup.sh

실행 가능하도록 설정해 줍니다.

cron 설정

이것을 FreeNAS WebUI 의 task – cron 에서 cron 작업을 등록하겠습니다.

7일마다 (0 3 */7 * *) 증분 백업을 (bash /mnt/System/data/script/incremetal_backup.sh) 루트 권한으로 (root) 실행하고

매월 1일에 (0 3 1 * *) 전체 백업을 (bash /mnt/System/data/script/full_backup.sh) 루트 권한으로 (root) 실행하도록 하겠습니다. 

마치면서

백업하는 방법까지 포스팅했습니다. 이것으로 FreeNAS 서버 구축하기는 끝입니다. 이후부터는 몇가지 팁을 알려 드리거나, 설치해보면 좋을 만한 프로그램을 소개하는 등의 포스팅을 할 것입니다.

생소한 OS 라서 안 그래도 따라오기 힘든데, 설명도 개떡같이 하니 더 힘드셨을거라 생각합니다. 처음 쓰는 포스팅이고 처음 만들어보는 서버라 지리멸렬하게 서술한 감이 없잖아 있는 듯 합니다. 그래도 끝까지 읽어 주셔서 너무 감사합니다.

제 포스팅을 모두 보셨다면 여러분 모두 적어도 저 수준의 FreeNAS 서버 관리 능력은 얻으셨을 것이라 생각합니다. 한국에도 FreeNAS 와 FreeBSD 사용자가 늘어나길 바라면서 포스팅을 마칩니다.

시리즈 네비게이션<< 만능 다운로더 – Jdownloader + VNC팁 : 일괄 업데이트 스크립트 >>

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다